BDE也是可以放在datamod中。区别是ADO用的是Microsoft提供的数据驱动,BDE用的是Borland提供的。ADO比较好用,大部分的需求都有了。
sql.add('insert into xmb values ( ''+edit1.Text+'')')这句里面,SQL语句不严谨,表xmb必须是只有一个字段才会成功,如果有多个字段,则必须加上列名。建议改成这样
procedure TForm1.Button1Click(Sender: TObject)
var
sql:string
begin
sql:='insert into xmb(对应的列名1,对应的列名2) values(''%s'',''%s'')'
sql:=format(sql,[edit1.Text,edit2.Text])
with adoquery1 do
begin
close
sql.Clear
sql.add(sql)
execsql
end
end
这个仅仅是插入记录,并不会在dbgrid中显示,要想显示就改成这样
procedure TForm1.Button1Click(Sender: TObject)
var
sql:string
begin
sql:='select * from xmb'
with adoquery1 do
begin
//这边要打开显示
close
sql.Clear
sql.add(sql)
open
//下面开始添加
append
fieldbyname('对应的列名1').asstring:=Edit1.Text
fieldbyname('对应的列名2').asstring:=Edit2.Text
post
end
end
......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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)