首先要有一个结构相同的数据库
adodataset1.locktype:=ltbatchoptimistic
///////////
adoconnection1.open
adodataset1.connection:=adoconnection;
adodataset1.open;
//////////////
adodataset1.updatebatch;
adodataset1.locktype:=ltbatchoptimistic
///////////
adoconnection1.open
adodataset1.connection:=adoconnection;
adodataset1.open;
//////////////
adodataset1.updatebatch;
解决方案 »
- 付费求助:PDF阅读器 光盘 加密狗
- 推荐我的DELPHI技术博客 http://blog.vsharing.com/mstar/
- datetime转换问题
- 在线等+急+解决马上给分+数据库自动连接问题(手工配置或以连,程序化后失败)报连接字符串属性无效!!晕
- 基础问题!!请帮忙!
- 100分求助!!!SQL Server 连接问题
- idTcpServer问题
- 哪儿有可以安装在 Delphi2006下的 cxGrid 下载呀??
- 教:怎么利用createfilemapping来在两个不同的进程共享图像数据?
- 给一些建议,关于MIDAS。
- 怎样改变stringgrid边框的颜色和某一栏的背景色??(在线)
- 什么工具能使编译的EXE文件尽可能的压缩大小,而且还可执行?
DesConnection.Close;
DesDataSet.LockType:=ltBatchOptimistic;
DesDataSet.LoadFromFile('example.xml');
DesConnection.Open;
DesDataSet.Open;
DesDataSet.UpdateBatch;
1:使用 batchoptimistic模式只能删除和修改记录,但不能添加记录。这是因为
ado在更新时需要首先查询数据库中的索引字段以定位记录。
如果你只对记录进行删除和修改操作,上述方法没有问题,若仍有问题,请提出
2:如果要添加记录,可以进行下面的变通处理
a:设计阶段
adoconneciton1
adodataset1
connection:=adoconnection1
commandtext='select yourfields from you table'(一定要包含主索引字段和要求非空的字段)
active:=true
adodataset2
connection:=adoconnection1
LockType:=ltBatchOptimistic;
b:使用adodataset2.loadfromfile方法加载xml文件c:////查找新添加的记录,实际添加之
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
try
adoconnection1.BeginTrans;
while not adodataset2.Eof do
begin
if not (adodataset1.Locate(索引字段名,adodataset2.fieldbyname(索引字段名).value,[loCaseInsensitive] ) ) then
begin
adodataset1.Append;
for i:=0 to adodataset1.FieldCount-1 do
adodataset1.Fields[i].value:=adodataset2.Fields[i].value;
adodataset1.Post ;
end;
adodataset2.next;
end;
/////////////
adodataset2.UpdateBatch ;
adoconnection1.CommitTrans;
showmessage('更新完成');
except
adoconnection1.RollbackTrans ;
end;
end;
///////////
这样处理以后应该没有问题,我已作过测试了