关于Delphi+access的cache问题,100分啊!!(100分)

  • 主题发起人 主题发起人 吕建设
  • 开始时间 开始时间

吕建设

Unregistered / Unconfirmed
GUEST, unregistred user!
我用delphi4.0和access,在编写数据库的主从表用到了cache,
因为是本地数据库,我用table来做,下面是我的一段程序老是
出现'At beginning of the table'的的错误,不知为什么,
各位多多帮忙!!谢谢!!
maintable(主表)和subtable(子表)多设置cache为true
subtable连接到maintable
:
try
maintable.disableControls;
subtable.disablecontrols;
maintable.append;
maintable.fieldbyname('连接字段').asstring :='###';
maintable.post;
subtable.append;
subtable.fieldbyname('其他子表字段').asstring ;='#####';
subtable.post;
finally
maintable.enablecontrols;
subtable.enablecontrols;
end;
帮帮忙!! 到底错在哪里?
 
到哪一行出错啊?
 
要加上applyupdates, 否则dbaware找不到记录.

 
cydown,能不能说详细点,我在subtable.post后加入
...
maintable.applyupdates;
subtable.applyupdates;
finally
...
也是出现同样的"at beginning of the table"的错误!
在单步调试中,到了subtable.post后就跳到了finally后的
语句.


 
啊, 看来你是subtable没有post成功, 而maintable成功, 然后maintable的记录
定位到新记录上, subtable没有对应的记录, 结果subtable.bof=true了:-)
解决方法, subtable的关键字段要和maintable的关键字段一样, 否则会出问题.
 
cytown :
maintable.post后主表的指针难道不时指向该记录吗?
关键字段一样,可是主从表是一对多的关系,子表只有
连接字段不是子表的关键字段,是索引。
能不能再解释清楚点!先谢过!
还有出现一个怪问题,就是如果用odbc连接并不会上述
  问题,但我必须用BDE.
 
啊, 你是不是用了cachedupdates:=true了? 改成false.
如果非要true, 那么, maintable.post后面要加上maintable.applyupdate,
subtable也是一样.
 
  cytown:
我是都使updates:= true,但按所说的做法
 在mainttable.post;加maintable.applyupdaes
subtable.post;加subtable.applyupdates;仍是出现
老毛病,不知为什么... 是不是access和bde连接的bug
谢谢热心帮忙!
 
I think it should be:
maintable.append;
subtable.append;
/////////添加记录////
maintable.Applyupdates;
subtable.Applyupdates;
maintable.commitupdates;
subtable.commitupdates;
 
>> subtable.append;
>> subtable.fieldbyname('其他子表字段').asstring ;='#####';
>> subtable.post;
问题应该在这.
subtable连maintable的关键字段呢? post时这个字段为null呀. 连不上主表乐.
 
to norton :
我按你的做法试了,到了maintable.applyupdates就出现问题了
"at beginning of the table"有可能cache中主表和子表的指针指向
有问题.

to another_yes:
subtable连maintable的关键字段已经通过属性配置好了.

谢谢!!
 
可不可以这样做:
先添加一个Database1,然后在主表的AfterPost添加:
DataBase1.Applyupdates([maintable]);
在子表的AfterPost添加:
DataBase1.Applyupdates([subtable]);
 
fstao:
你提议的效果与上述已提出的效果是一样,看来这
问题确实很棘手!!
谢谢你的提议!!
 
to all:
有谁用过delphi+access且用到缓冲的?是否有类似的情况?
 
解决如下: 将access和odbc相连.

分数照样给了!!
 
后退
顶部