用delphi 5+access 2000数据库编程时总是有问题(100分)

  • 主题发起人 主题发起人 kk98
  • 开始时间 开始时间
K

kk98

Unregistered / Unconfirmed
GUEST, unregistred user!
我在用delphi 5(build 6.18 update pack 1)+access 2000编程时,遇到了不少问题
1.开始我使用ADO方式连接access2000数据库,数据库中有main_table,sub_table两个
表,它们需要进行关联,在程序中我用ADOTABLE控件访问这两个表,但是在后来使用
发现在用DBGRID控件显示这两个表的数据时,经常有些记录(数量很少)怎么也显示不
出来,这些记录的数据与正常记录没有什么不同的地方,但是我换成用BDE方式连接
access2000数据库时,所有的记录都能显示出来。

2.后来我换成用BDE方式连接access2000数据库时又有问题了(我ADOTABLE换成TABLE,
ADOQUERY换成QUERY控件)。在对main_table进行记录插入时,有个字段AA(数值型,
非关联字段)的值偶尔会发生缺少最后一位的情况。对AA字段的处理过程如下:
main_table.Open;
main_table.Last;
i:= main_table.FieldByName('AA号').AsInteger+1;
main_table.Close;



AA_edt.Text:= Format('%.5u',);



main_table.Open;
main_table.append;
main_table.FieldByName('AA').AsString:= MainNo_edt.Text;
main_table.post;
main_table.Close;

希望各位高手能给我指定迷津。
 
main_table.FieldByName('AA').Asinteger:=strtoint(MainNo_edt.Text);
 
我想不是那条语句的问题,因为我在用ADO方式时没有发生过AA字段少位的情况。
 
我用ADO方式连接access2000数据库,一切正常?
 
奇怪,奇怪
 
请查看JET版本号,ACCESS用JET 4 版本。
 
我也用过,一切正常!
 
我刚才把jet升级到Jet40sp5了,可是用ADO查询数据还是有些记录显示不出来!
 
是有点奇怪啊
 
有没有装Delphi For Ado的补丁.
 
一切正常
 
我已经将程序及数据库上传到邮箱a_aba_a@sina.com,口令是:12345678
各位高手可以去下载看看,但请不要修改邮箱的口令。
如果各位高手觉得我的分数给得太低了,我可以加到1000分!
 
看了一下,ID从680到1521的记录都有呀,没出现你说的丢失记录的问题呀。
我的环境是:WIN98 SE,ADO 2.5,ACCESS 97,DELPHI 5,未安装D5的任何升级包
 
你下载了ADO错误的例子运行比较了吗?你注意看base表的最后几条记录,就是
“下机辊号”字段中编号>842的记录无法用ADO查询显示。
 
装Delphi5的ADO补丁2.0试试!
 
delphi 5的补丁和ado升级包我都装了!没用!
 
把你那段查询代码完整贴出来,让大家给找找有没有什么毛病!
 
我已经看过你的代码了,完全正常,如果你确实是听了我的话,装了ADO2的补丁的话。
当然我想你有可能错的是:其实你的代码是没有问题的,查出来的记录确实是到了842就没有
了,好象少了3条,其实你往前翻一下,就会发现你要找的843-845的记录在748条记录后。
其实原因很简单,你没有排序,所以中间的没有看见。你可以用以下查询查看就可以看见了。
select * from base order by 下机辊号。OK,全部搞定,如果还有问题,可以写信给我,
也可以在线找我,如果我在线的话。我的MSN是heavenghsot2k@hotmail.com.
 
感谢proman,但是我还是想不通为什么843,844会显示在748后面呢?还有使用BDE存取
数据怎么会发生缺位的情况呢(由于是在客户那里使用是偶然出现的情况,我也无法给
各位一个错误再现的环境)?最后再次感谢proman,我会在适当时候给你加分的!
 
关系型数据库本无所谓记录的顺序.所以你的程序不应当依赖于记录在数据库中的顺序.如果
你需要数据的显示是有序的话,那么你应当使用Order By子句.当你向数据库中插入记录时,
对于关系数据库而言,并不能保证数据插在最后,可能是插在任一位置.
 
后退
顶部