首先要有一个结构相同的数据库
adodataset1.locktype:=ltbatchoptimistic
///////////
adoconnection1.open
adodataset1.connection:=adoconnection;
adodataset1.open;
//////////////
adodataset1.updatebatch;
adodataset1.locktype:=ltbatchoptimistic
///////////
adoconnection1.open
adodataset1.connection:=adoconnection;
adodataset1.open;
//////////////
adodataset1.updatebatch;
解决方案 »
- 关于MDIForm问题
- 请文各位大大们,谁知道打开pdf的Delphi控件
- 请各位大哥,给我调式这两个过程,马上揭贴,谢谢!
- 关于申明变量的小问题,怪,怪,怪,大家一块来看看,小弟太菜了!
- 想给button两个caption,该怎么做啊?
- 老师布置的一道题,大家来帮忙
- 导入了dpk包,修改了里面的代码,编译运行却没起效果,望指点!
- 水平考试很快就到了、但脑里一片空白
- 请问XE5,XE6开发的安卓程序支持不支持intelX86芯片的设备
- 求(paradox)SQL语句
- 怎样改变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;
///////////
这样处理以后应该没有问题,我已作过测试了