[delphi]
view plain copy
//atablename-表名, akeyfield-主键,多个主键用;隔开,如 ;pid;times; from:unit hlsimplbase;
[delphi] view plain copy
function thlsimplbase.updatetabledata(atablename, akeyfield: ansistring; var adata: variant): boolean;
var
lsql: string;
ldataset: tdataset;
lprovider: tprovider;
lerrcount: integer;
i: integer;
begin
result := false;
if atablename = '' then exit;
if akeyfield = '' then exit;
lsql := 'select * from ' + atablename + ' where 1 = 2';
ldataset := createdataset(lsql);
if not assigned(ldataset) then exit;
lprovider := tprovider.create(nil);
lprovider.updatemode := upwherekeyonly;
lprovider.dataset := ldataset;
akeyfield := lowercase(akeyfield);
for i := 0 to ldataset.fieldcount - 1 do
begin
if (lowercase(ldataset.fields[i].fieldname) = akeyfield) or
(pos(';' + lowercase(ldataset.fields[i].fieldname) + ';', akeyfield) > 0) then
ldataset.fields[i].providerflags := ldataset.fields[i].providerflags + [pfinkey]
else
ldataset.fields[i].providerflags := [];
end;
try
try
lprovider.applyupdates(adata, -1, lerrcount);
except
end;
result := lerrcount = 0;
finally
ldataset.free;
lprovider.free;
end;
end;
以上就是如何使用delphi将clientdataset的delta保存到数据库中的详细内容。