表结构如下
create table DocType
(
DocT_ID INT Not null identity(10001,1) primary key,
DocT_Pro Nchar(12) Not null
)
使用DBedit 承接DocT_Pro,
按键BT1代码:
procedure Tdocinfform.BitBtn1Click(Sender: TObject);
begin
cdm.CDataM.docinfDataSet.FieldByName('DocT_ID').Required:=FALSE;
cdm.CDataM.docinfDataSet.Insert;
cdm.CDataM.docinfDataSet.Post;
end;提示错误:key violation如何解决?我是使用三层结构,clientdataset连接应用服务器
create table DocType
(
DocT_ID INT Not null identity(10001,1) primary key,
DocT_Pro Nchar(12) Not null
)
使用DBedit 承接DocT_Pro,
按键BT1代码:
procedure Tdocinfform.BitBtn1Click(Sender: TObject);
begin
cdm.CDataM.docinfDataSet.FieldByName('DocT_ID').Required:=FALSE;
cdm.CDataM.docinfDataSet.Insert;
cdm.CDataM.docinfDataSet.Post;
end;提示错误:key violation如何解决?我是使用三层结构,clientdataset连接应用服务器
2:将指向TAdoQuery的TDataSetProvider控件中的BeforeUpdateRecord事件中写入代码:
if updatekind=ukinsert then
DeltaDS.FieldByName('DocT_ID').ProviderFlags:=DeltaDS.FieldByName('Add_ID').ProviderFlags-[pfinkey]
else
DeltaDS.FieldByName('DocT_ID').ProviderFlags:=DeltaDS.FieldByName('Add_ID').ProviderFlags+[pfinkey]
3:在客户端不要对DocT_ID作任何赋值或修改类的操作procedure Tdocinfform.BitBtn1Click(Sender: TObject);
begin
cdm.CDataM.docinfDataSet.Insert;
cdm.CDataM.docinfDataSet.FieldByName('DocT_ProN').AsString := "Value";
cdm.CDataM.docinfDataSet.Post; //另外也不是用Post提交,一般用ApplyUpdate提交
end;