请帮帮我!关于ADO的更新问题我搞了几天都无法解决!(200分)

  • 主题发起人 主题发起人 forgot2000
  • 开始时间 开始时间
F

forgot2000

Unregistered / Unconfirmed
GUEST, unregistred user!
ADOQuery的数据集是多表关联的,如select a.*,b.name from table1 a,table2 b where a.b_id=b.id,
象这样的ADOQuery在Post时会自动地进行多表更新,比如删除时会把两个表的数据同时删除,如果
在ADOQuery的AfterOpen事件中写ADOQuery1.Recordset.Properties.Item['Unique Table'].Value:='table1';
可以解决这个问题,但如果是新增记录的话还是同时更新两个表。但我只需要更新一个表呀!
不知道大家有没有遇到过这个问题,就是ADO中多表关联的数据应该怎样进行单表更新的问题,请救就我吧,各位
大虾!
我知道在BDE中很容易解决这个问题,但现在程序写了很多了,不能临时换控件了,因为我有特殊原因,也不能
使用Lookup字段,所以数据集肯定是多表关联的结果,应该怎样在最后更新(主要指增加记录)时实现对单一的表
进行更新呢?

 
你看这2个表之间是不是设置了级连更新(ACCESS),有触发器(SQL SERVER),你出掉
上面的设置应该就可以满足你的要求
 
我看不出你的代码有什么问题。我就是这样写SQL语句,但更新的只有一个表呀。
 
我也碰到你的情况,后来我的解决方法是直接用sql语句进行删除,
更新操作,这种语句只用来显示。
 
取ADOQuery的固定列,选择你不需要更新的字段,设置他的属性ProviderFlags的属性为
false就行了
 
不行,我的ADOQuery字段不是固定的,所以没法设置其属性。
 
是不是服务器那边的问题?
 
是否可以用存储过程来实现同时更新?
 
我的后台数据库是SQLServer2000。
 
不行的,我试过很多次了,很多朋友在使用ADO的时候也有这个问题,但奇怪的是:有的有这个问题,有的却没有。而我是所有ADO、BDE、Delphi的升级补丁都打上了,还是解决不了这个问题。但最最费解的是,同一个程序中,我用两个ADOQuery都写了相似的多表连接语句,其中一个ADOQuery更新存在问题,另一个却没有,我找了老半天都没发现这两个ADOQuery有什么属性设置不一样,我搞得头都大了。
 
ADO多表的更新时要使用事务处理
begintran 和committran
不然会出问题,李维书adi/mts/com+ 好像上第二章节有讲,还有例子
 
事务处理也没有用,李维的书没有解决这个问题。
 
难道没有人遇到过这个问题吗?大家是怎么解决的,大家难道都用LookUp字段吗?
 
你的表有没有主键呀,或者干脆用sql语句进行更新或删除
 
我的表有主键,正因为有,所以我觉得可以做到单表更新,但新增操作总是出问题。
 
两张表都有主键,没有主键的表是不会update(SQL SERVER中)
 
我一般这种情况,更新都用SQL语句去做了不会有问题了
 
那就别用关联了,在增加删除时不用关联,在浏览时再关联,或者你的问题能不
能具体点,或者会好解决点
 
多人接受答案了。
 
后退
顶部