请问如何在ADOQuery中Append一条新记录? ( 积分: 20 )

  • 主题发起人 主题发起人 yemo0459
  • 开始时间 开始时间
Y

yemo0459

Unregistered / Unconfirmed
GUEST, unregistred user!
我想将统计结果写入这个ADOQuery中,先用内嵌SQL语言的Create创建了一个空表,然后用Fieldbyname.value往里面填写统计结果。现在只能填写第一条记录,当用Append往下面追加空记录并准备往里填写新数据时,总是提示有错误。估计是Append的用法有问题。

请哪位朋友列一个可以相对完整可以正确追加记录的步骤好么?先表谢意!
 
你所说的应该在追加记录的前面都需要调用append才OK,但是有些控件就不需要那样,可以在输入完成以后统一保存到数据库Clientdataset(datasnap)
 
以下是我的程序模块,请高手审阅指导。结尾处的出错语句我已加了注释。谢谢!

procedure TForm1.Button2Click(Sender: TObject);
begin

With AdoQuery1 do
begin
Close;
Sql.Clear;
Sql.Add('Create table 1ctsklnts.dbf (sj char(4),bxjs number(5),cdjs number(5),pljs number(5),wljs number(5))');
showmessage(Sql.Text);
ExecSql;
Sql.Clear;
Sql.Add('Select * from 1ctsklnts.dbf');
Active:=true;
append;
FieldByName('sj').AsString:='1996';
FieldByName('bxjs').Value:=15;
edit;
append; //当实行到这一步时,总是出错!不能追加一条空记录
FieldByName('sj').AsString:='1997';
FieldByName('bxjs').Value:=25;

end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin

With AdoQuery1 do
begin
Close;
Sql.Clear;
Sql.Add('Create table 1ctsklnts.dbf (sj char(4),bxjs number(5),cdjs number(5),pljs number(5),wljs number(5))');
showmessage(Sql.Text);
ExecSql;
Sql.Clear;
Sql.Add('Select * from 1ctsklnts.dbf');
Active:=true;
append;
FieldByName('sj').AsString:='1996';
FieldByName('bxjs').Value:=15;
//去掉edit,加上
post;
append; //当实行到这一步时,总是出错!不能追加一条空记录
FieldByName('sj').AsString:='1997';
FieldByName('bxjs').Value:=25;
post;
end;
end;
//执行有先后。
 
先谢谢楼上!但是还是没有解决问题。运行时,总是出现如下出错提示:

Project CreaTable0.exe raised exception class EOleException with message '提供程序不能确定该值。原因可能是:记录刚刚创建,该字段的默认值不可用,或用户未设置新值。'.Process stopped. Use Step or Run to continue.


所以,继续期待能够运行通过的答案!先致谢意!
 
edit;
append; ??????????????

之后数据集处于
dsEdit状态,当然不能append。。。。
edit。。。。post
append。。。post要配套
 
上述答案都在细节上调不通。我最后自己弄通了。那就是append和post是不能配套用的。应该是append...edit..post。
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
930
DelphiTeacher的专栏
D
D
回复
0
查看
871
DelphiTeacher的专栏
D
后退
顶部