各位,好友!
我用的是三层结构,服务端用的是。SOCKET,ADOConnection1,DataSetProvider1,ADOQuery1等,客户端用的是:
SocketConnection1,ClientDataSet1,DataSource1等。发现添加多行数据到数据库中,每次只能保存第一行记录。而且每次都是保存第一条记录。
部分代码如下:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
procedure Twdj_jhd.N1Click(Sender: TObject); //增加物料
var
i: integer;
a:string;
begin
application.createform(Twlmain1, wlmain1);
try
wlmain1.showmodal;
finally
wlmain1.Free;
for i := Low(ClbmRec) to High(clbmRec) do
begin
fm_data.ClientDataSet1.Insert;
a:=trim(DBEdit1.Text);
fm_data.ClientDataSet1.fieldbyname('jhbh').Value:=a;
fm_data.ClientDataSet1.fieldbyname('bm').value := clbmRec[i].clbh;
fm_data.ClientDataSet1.fieldbyname('mcxh').value := clbmRec[i].clmc;
fm_data.ClientDataSet1.fieldbyname('gg').value := clbmRec[i].clgg;
fm_data.ClientDataSet1.fieldbyname('shl').value := clbmRec[i].clshl;
fm_data.ClientDataSet1.Post;
fm_data.ClientDataSet1.ApplyUpdates(0);
end;
end;
end;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
发现 fm_data.ClientDataSet1.Post; 这行没有起到作用,没有他也可以保存,因为调用了缓存更新,
但是,用这个fm_data.ClientDataSet1.ApplyUpdates(0)缓存更新,保存多行记录时,他只保存第一行记录,从第二行起,就不保存里了。
不过在单机版中测试过,可以保存,但是三层结构就不行了。
请问各位好友,如果解决以上问题。在次先谢谢各位好友,