adoTable多长时间能接受到插入的数据集,值得大家一起研究

Rubi 2006-05-12 02:04:36

我先往数据库中插入数据,然后再根据对应表返回的记录数在来,如果我直接运行button, ShowMessage(intToStr(adoTbScp.recordcount));得值为0,而我设置断点,等几秒在F9运行,显示的是600,问题就是上面数据刚插入进去,这里的adoTbScp表还没有来的急接受到信息,不知道大家碰见过这样的情况没有?
=======================================================
openDialog1.Filter :='Text files (*.txt)|*.TXT';
if openDialog1.Execute then //倒入的文本文件名要求简单,不要用过多的汉字
begin
adoQ.Close;
adoq.SQL.Clear;
adoq.SQL.Text :='select * from scp where time =#'+Formatdatetime('YYYY-MM-DD',DateTimePicker1.Date)+'#';
adoQ.Open;
if adoQ.RecordCount > 0 then
begin
adoTbScp.Connection.Execute('delete from scp where time =#'+Formatdatetime('YYYY-MM-DD',DateTimePicker1.Date)+'#');
IniFile(ExtractFileName(OpenDialog1.FileName));
adoCoon.Connected:=false;
SQLStr:='insert into Scp select * From [Text;Database='+ExtractFilePath(openDialog1.FileName)+';Format=Delimited()].'+ExtractFileName(openDialog1.FileName);
adoCoon.Execute(SQLStr);
adoCoon.Connected:=true;
end
else
begin
IniFile(ExtractFileName(OpenDialog1.FileName));
adoCoon.Connected:=false;
SQLStr:='insert into Scp select * From [Text;Database='+ExtractFilePath(openDialog1.FileName)+';Format=Delimited()].'+ExtractFileName(openDialog1.FileName);
adoCoon.Execute(SQLStr);
adoCoon.Connected:=true;
end
end;

adoTbScp.Close;
adoTbScp.Open;=====================================请看这一行
ShowMessage(intToStr(adoTbScp.recordcount));
while not adoTbScp.Eof do
begin
adoTbScp.Edit;
adoTbScp.FieldByName('scp').Value := rightStr(StringReplace(ExtractFileName(OpenDialog1.FileName),ExtractFileExt(OpenDialog1.FileName),'',[]),4);
adoTbScp.FieldByName('time').Value :=Formatdatetime('YYYY-MM-DD',DateTimePicker1.Date);
adoTbScp.Post;
adoTbScp.next;
end;
...全文
101 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rubi 2006-05-12
  • 打赏
  • 举报
回复
adoTbscp是AdoTable,不用做查询的
Rubi 2006-05-12
  • 打赏
  • 举报
回复
我现在又做了个测试:
adoQ.Close;
adoQ.SQL.Clear;
adoQ.SQL.Text :='select * from scp';
adoQ.Open;
adoTbScp.Close;
adoTbScp.Open;
ShowMessage(intToStr(adoTbScp.recordcount)+' '+intToStr(adoQ.recordcount));
for i:=1 to adoQ.RecordCount do
begin
adoTbScp.Edit;
adoTbScp.FieldByName('scp').Value := rightStr(StringReplace(ExtractFileName(OpenDialog1.FileName),ExtractFileExt(OpenDialog1.FileName),'',[]),4);
adoTbScp.FieldByName('time').Value :=Formatdatetime('YYYY-MM-DD',DateTimePicker1.Date);
adoTbScp.Post;
adoTbScp.next;
end;

把adoQuery和adoTable数据进行比较:
测试状态一:
数据库表中无任何记录集
返回 adoq 600 adotable 600
测试状态二
插入重复记录数据
返回 adoq 600 adotable 0

happyct 2006-05-12
  • 打赏
  • 举报
回复
怎么没见到 adoTbScp是怎么查询记录数的?你的sql语句在哪里?

要人家帮你看问题,总得把问题给罗列清楚

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧