问题是这样的,小弟在自己本机电脑上用几十个数据测试,一切正常。应用程序可以从SQL服务器上下载签到数据,保存到access数据表SignTimeTemp中,数目一致。但是改用网络传输大批量数据,会产生数据丢失的情况。几百个数据会丢失几十个,SQL上1631个记录,只下载了1276个。我尝试过好几种方法,还是不能解决问题。
真是不知道是什么原因? 请教各位大侠了 if ADSignedUser.RecordCount <> 0 then// SignedUser是SQL Server上存储签到数据的表
begin
//下载人员签到资料信息到应用程序Data中中表SignTimeTemp
ADSignedUser.First;
Repeat
//Screen.Cursor := crHourGlass;
//不重复添加记录
Rdatetime := ADSignedUser.FieldByName('datetime').Value;
if ADSignTimeTemp.Locate('datetime',Rdatetime,[])= false then
ADSignTimeTemp.AppendRecord([ADSignedUser.FieldByName('datetime').Value,
ADSignedUser.FieldByName('cardnum').Value,
ADSignedUser.FieldByName('name').Value
]);
ADSignedUser.Next;
Until ADSignedUser.Eof;
if ADSignTimeTemp.Modified then ADSignTimeTemp.Post;
end;
真是不知道是什么原因? 请教各位大侠了 if ADSignedUser.RecordCount <> 0 then// SignedUser是SQL Server上存储签到数据的表
begin
//下载人员签到资料信息到应用程序Data中中表SignTimeTemp
ADSignedUser.First;
Repeat
//Screen.Cursor := crHourGlass;
//不重复添加记录
Rdatetime := ADSignedUser.FieldByName('datetime').Value;
if ADSignTimeTemp.Locate('datetime',Rdatetime,[])= false then
ADSignTimeTemp.AppendRecord([ADSignedUser.FieldByName('datetime').Value,
ADSignedUser.FieldByName('cardnum').Value,
ADSignedUser.FieldByName('name').Value
]);
ADSignedUser.Next;
Until ADSignedUser.Eof;
if ADSignTimeTemp.Modified then ADSignTimeTemp.Post;
end;
http://topic.csdn.net/u/20120224/11/57bcb284-951b-4ea2-8437-df27670f567c.html?53150
再自己找原先
先确保 ADSignedUser 数据正确
SQL服务器上的数据,是正确的。
上午已查明原因,是因为SQL服务器上存在不少相同的Rdatetime,而我在用if语句过滤掉了,所以才会造成数据丢失。