主从表输入采用TQuery控件,并设置缓存更新,为何老出问题?(100分)

  • 主题发起人 主题发起人 DarkBlue
  • 开始时间 开始时间
D

DarkBlue

Unregistered / Unconfirmed
GUEST, unregistred user!
qryMaster,qryDetail的DataBase属性,SQL属性,CachedUpdate,UpdateSQL都已设置,qryDetail的DataSource也已设为qryMaster的DataSource组件,但提交时,老说qryDetail的一个字段(用于和主表相连的字段)为Null。并且把当前记录提交到缓存后,滚动记录时,缓存中的记录消失了,也就是说只能缓存一条当前记录。那位专家有这方面的经验,请指教。谢谢。
 
别忘了Commit和RollBack,
最好在数据库一级定义两张表的约束。
 
设一下从表的该字段再post
 
agree walala
 
walala:
"设一下从表的该字段再post" 试了试,不行
 
1。 你先提交Master表试试。
2。 当你在Master表移动时,Details表得Query要Close,Open一次,将以前得数据
冲掉。(猜测)
 
谢谢你们的热心帮助,不过,你们都没有解决这个问题。再强调一下
我得问题是:为什么从表的数据提交不到数据库?提交时出错,说
关键字段为空.(这可以通过在从表的BeforePose事件句柄中给它赋值来解决)
但为什么当我用从表的ApplyUpdates方法时不能提交到数据库?各位专家
最好试一下!
 
试试Database.ApplyUpdates([qryDetail,qryMaster]);
 
1.为什么从表的数据提交不到数据库?
以我的经验,主从表的关系一旦确立后,
你只要保证主表的新添纪录保存后,再输入子表,
那么你将立即看到:子表与主表联系的字段被自动赋值.
这应是毫无疑问的! 如果你的子表无法提交,那么请检查
主从表的联系设置,如子表的MasterSourse,MasterFields,IndexFieldNames.

2.从表的ApplyUpdates方法时不能提交到数据库?
以我的经验,ApplyUpdates并不能如我们希望的那样
刷新显示数据控制元件的显示缓冲区.
如果你的子表配有DBNavigator,那么执行:
DBNavigator.BtnClick(nbPost);
如果没有,那么如下不失为一个好办法:
子表:Table.Close;
Table.Open;
我一直是这样做的,简单而有效!
 
检查一下两个表的设计, 是否字段大小与类型一样?
 
你的为空字段是不是Memo字段?
 
to :zypeny
DarkBlue用的是Query,而不是Table!!!用Table则不会有问题,而用Query时我
也碰到了一模一样的问题。真得急死人了!!!!!!!!!!!!!!
 
接受答案了.
 
后退
顶部