快帮帮我解决一下,ADOQuery的问题。(50分)

  • 主题发起人 主题发起人 aszou
  • 开始时间 开始时间
A

aszou

Unregistered / Unconfirmed
GUEST, unregistred user!
用两个ADOQuery1,ADOQuery2和Access的两个表连接,
ADOQuery2用DataSourse和ADOQuery1设置成主从关系,
ADOQuery1的主键aa为自动编号,和ADOQuery2的bb连接,
对两个表进行Insert操作,当Post时,总是ADOQuery2先行post,
出错提示为:“主键或索引不能为空。”
在ADOQuery2的beforePost中加入
ADOQuery2.FieldByname('bb').asstring:=ADOQuery1.FieldByname('aa').asstring
监视ADOQuery1.FieldByname('aa').asstring='';
我研究了一天也没弄明白,到底应该怎么办啊?
 
你说的是ADOQuery1是主表吧,如果这样,先ADOQuery1.post,再ADOQuery2.post不就OK了吗
 
可能是主从关系引起来的!
你这样写问题多多啊,建议你改用全部的sql语句才操作,插入就用insert
更新就用update,这样操作起来很方便,没有那么多问题!
 
使用SQL语句来增加数据就可以了。
 
如果你对关联表操作,建议用insert,update这样标准的用法,加个adoconnection控件.
,可以方便连接.还有应该加上事务处理功能。
例如在adoquery1的beforepost事件上加开始事务的代码:adoconnection1.begintrans.
在afterpost事件上加上adoconnection1.committrans.在onerror事件中加上:
adoconnection1.rollbacktrans;
action:=daabort
这样有错也不会破坏表的完整性了。
 
多人接受答案了。
 
后退
顶部