Delphi如何在AdoQuery 中追加记录

2026年09月08日 20:37
有1个网友回答
网友(1):

......

Sql.Clear;
Sql.Add('Select * from 1ctsklnts.dbf');
Active:=true;
append;
FieldByName('sj').AsString:='1996';
FieldByName('bxjs').Value:=15;
post;
//edit;
append; //当实行到这一步时,总是出错!不能追加一条空记录
FieldByName('sj').AsString:='1997';
FieldByName('bxjs').Value:=25;
post;

......

============================================
我省略了前后和你一样的代码,你试试
============================================
补充:呵呵,我现在没有Delphi调试,不过先Append然后赋值,最后Post,这个过程是绝对没有问题的!

或者你把Active:=true;换成Open;试试,其实是一样的。
============================================
嗨!明白了,你看你有多少个字段,你赋了值的才几个?把所有字段都赋值了你再试试!
============================================
这个是我调试通过的,我用的是Access数据库,文件名:test.mdb

调试过程中发现你的create table语句有错误,把所有number类型的长度参数删除,number长度是固定的,不需要指定长度。

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