我用ClientDataset从数据库读出数据,现在要把修改后的数据更新到数据库
但是ClientDataset有新增的记录,就会报"insert into 语法语句错误",无法更新,
如果只是修改已有数据的话,可以顺利更新到数据库,请问怎么 解决?
我的更新代码 itemCds是TClientDataset类型
var
Query: TADOQuery;
i: integer;
pv: TProvider;
begin
pv := TProvider.Create(nil);
Query := TADOQuery.Create(nil);
Query.Connection := Adoconnection;
try
Query.SQL.Text := 'Select * from Item';
Query.Open;
Query.Fields.FieldByName('itemid').ProviderFlags :=
[pfInKey, pfInUpdate, pfInWhere];
pv.DataSet := Query;
pv.UpdateMode := upWhereKeyOnly;
ItemCds.ProviderName := pv.Name;
if ItemCds.ChangeCount > 0 then
pv.ApplyUpdates(ItemCds.Delta, -1, i);
finally
FreeAndNil(pv);
Query.Close;
FreeAndNil(Query);
end;clientdataset
但是ClientDataset有新增的记录,就会报"insert into 语法语句错误",无法更新,
如果只是修改已有数据的话,可以顺利更新到数据库,请问怎么 解决?
我的更新代码 itemCds是TClientDataset类型
var
Query: TADOQuery;
i: integer;
pv: TProvider;
begin
pv := TProvider.Create(nil);
Query := TADOQuery.Create(nil);
Query.Connection := Adoconnection;
try
Query.SQL.Text := 'Select * from Item';
Query.Open;
Query.Fields.FieldByName('itemid').ProviderFlags :=
[pfInKey, pfInUpdate, pfInWhere];
pv.DataSet := Query;
pv.UpdateMode := upWhereKeyOnly;
ItemCds.ProviderName := pv.Name;
if ItemCds.ChangeCount > 0 then
pv.ApplyUpdates(ItemCds.Delta, -1, i);
finally
FreeAndNil(pv);
Query.Close;
FreeAndNil(Query);
end;clientdataset
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货