真是奇怪,请教(50分)

  • 主题发起人 主题发起人 8122338
  • 开始时间 开始时间
8

8122338

Unregistered / Unconfirmed
GUEST, unregistred user!
环境:WINDOWS2000 PRO SP4,ACCESS2000数据库,DELPHI6,假如人工打开数据库并在当中位置删除一条记录,然后人工关闭数据库,用ADOTABLE1插入一条记录,就会在原来删除的位置自动增加,而不是在数据库结尾增加,为什么?谢谢,
 
只是排序问题。。。
 
问题是表格上显示的顺序就乱了,不是按照时间顺序了
 
不管如何,程序都应该把记录加在ACCESS末尾的呀,为什么会插在当中呢?谢谢
 
确实是排序问题,建立数据表后每个记录有一个排列序号,你从中间删掉了一行,则序号A的记录DELETE,可是该记录的上一条和下一条的序号仍然是A-1和A+1,这时再插入一条,得到的序号是A,肯定会在之前A记录的位置上.
 
程序运行后按照删除后的数据库建立了新的连接,排列序号应该重新产生(按照新的数据库的内容),不是吗?所以还是应该加再末尾?
 
用的是append,还是insert?二者有区别
 
用Append!
解释:
1、Append是在记录尾部追加(就像Append关键字的译文一样是“追加”的意思)新记录;
2、Insert是在当前记录点前插入(就像Insert关键字的译文一样是“插入”的意思)新纪录。
比如:原来数据库中有200条记录,目前数据库记录指针位于第100条记录处。则用Append关键字的操作将在数据库的尾部追加第201条记录,并且记录指针移至当前记录(即第201条记录处,或者说移至数据库记录尾部);若用Insert关键字则在第99条与第100条记录间插入新纪录,并且记录指针停留在该记录处。
 
我用的APPEND呀,重新运行程序,按照道理重新连接了数据库,应该添加在末尾的而不是当中
 
ACCESS是这样的,他删除一条记录,不是真是的物理上的删除,只是在上面做了一个删除的标记,当有新的记录写进来的时候,就把那条记录写在那个已经标记了删除的位置。
不过增加一个索引应该可以解决这个问题。你可以在表中可以用作排序的字段加一个索引上去试试。
 
那要是有10000条记录,程序里把前5000条删除,然后在APPEND记录的话,那都是添在末尾的,不可能都是添在前5000条记录的位置吧(用DBGrid11看),这怎么解释呢?我怀疑是Delphi和WINDOWS的兼容性有问题,而且我发现ACCESS中的时间和DBGrid11中的时间在秒数上不完全一致(年月日小时分钟都对),有误差
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
898
DelphiTeacher的专栏
D
后退
顶部