ADO数据保存中很基本的一个问题,很急啊!解决了,还可以加分!!!(200分)

  • 主题发起人 主题发起人 逍遥泿子
  • 开始时间 开始时间

逍遥泿子

Unregistered / Unconfirmed
GUEST, unregistred user!
[:D]
在查询更新中,如下面的查询语句:
Select B.商品名称, B.规格,
A.*
From 商品明细 A INNER JOIN 商品资料 B ON A.商品ID = B.商品ID
如果在查询更新中,对A, B表中的字段都进行了更新。但在数据更新回后台时。
我只想对商品明细 A的更改更新,不对 B表的数据进行更新。怎么实现???

在BDE中,有UpdateSQL中, 通过UpDateSQL的SQL语句,就可实现对指定表进行数据更新。
在ADO中怎么实现啊?

我查了ADO中的书。好象在VB等中可以实现。不知在Delphi中,怎么没有这些设置了哦!

用ADO的怎么解决我上说的啊? 本人确实很急的哦! 分不够,只要解决问题,可以再加!
 
不是可以在ado中用更新语句update 吗用update 后,后面加查询结果集就可以实现你所说的.
你是不是老汉
 
数据集对Copy之后再保存Copy的那一个数据集。
 
如果可以在vb中实现 就一定可以在delphi中实现
因为大家都是调用同一个ado
 
设置动态属性 ADODataSet.properties['Unique Table'] = 'TableA' 就行了。
 
来晚了,呵呵。//那就贴出详细说明吧

Unique Table、Unique Schema、Unique Catalog 属性 — 动态


使用户能够直接控制在通过对多个基本表执行 JOIN 操所得到的 Recordset 中的特定基本表的修改。

Unique Table 指定一个允许进行更新、插入和删除的基本表的名称。


Unique Schema 指定模式,即表的所有者的名称。


Unique Catalog 指定目录,即包含表的数据库的名称。
设置和返回值

设置或返回字符串值,该值是表、模式或目录的名称。

说明

所要的基本表通过其目录、模式和表名唯一标识。设置 Unique Table 属性后,可使用 Unique Schema 或 Unique Catalog 属性的值查找基本表。在设置 Unique Table 属性之前需要设置 Unique Schema 和 Unique Catalog 属性的其中一个属性或同时设置两个属性,但这不是必须的。

Unique Table 的主键被用作整个 Recordset 的主键。该键可用于任何需要主键的方法。

设置 Unique Table 后,AddNew、Delete、Resync、Update 和 UpdateBatch 方法只能影响到所命名的表。

如果找不到唯一的基本表,将出现运行时错误。

当把 CursorLocation 属性设置为 adUseClient 时,这些动态属性均被追加到 Recordset 对象的 Properties 集合中。
 
所说有理。
在ADO中主要就是通过Unique Table、Unique Schema、Unique Catalog 属性来决定是否
对指定表数据进行更新的/ 马上就试!
不过,还有个问题。如果在数据集中,不对指定的字段进行更新,是不是设置
ProviderFlag属性? 有个pfInUpdate, pfInWhere, pfInKey, pfHidden等设置的!
 
to Qiuliang:
所说的设置动态属性 ADODataSet.properties['Unique Table'] = 'TableA' 就行了。
可是ADODataSet.properties['Unique Table']是只读属性啊!
to onedot:
你说的是有道理,在ADO的帮助中也有说明,就是在Delphi中应该怎么设置?关键是
不知道怎么来设置啊!
 
这个问题我也困扰很久了!!
ADODataSet.properties['Unique Table'] = 'TableA'只能解决删除的问题!!!
更新可以设置字段的 pflnupdate 属性解决!!
但是添加记录我还没有找到好的办法!!你有吗???
我的他不多了,可以赐给我一些吗???
 
>>不对指定的字段进行更新,是不是设置 ProviderFlag属性? 有个pfInUpdate,
>> pfInWhere, pfInKey, pfHidden等设置的!
三层下的控制就是这么控制的。去掉pfInUpdate就行了。

我的解决方法是:不想更新的字段设置readOnly为true.
 
再提前,看有没有更合理的解决方案!
不知道BetterADODataSet是解决这样的问题的?
 
好象ADOQuery.properties['Unique Table'] = 'TableA'
只能对insert ,delete有用。对update无效。
如果要update的话
可能有用到wumeng的方法
 
要知道可以像wumeng說的不想更新的字段设置readOnly为true,但後台是對所有連接表都在
起作用啊!caffen所說的好象ADOQuery.properties['Unique Table'] = 'TableA'
只能对insert ,delete有用。对update无效。其實有誤,ADOQuery.properties['Unique Table'] = 'TableA'
隻對delete有用,對insert沒用,因後台在對兩個表在操作.如果你所說的是真,你能給我們看一下你所做的好嗎?
現好像有三個解決辦法,一種不要用控綁方法就萬事大吉,另一種用控綁方法現隻能用計算或
lookup,其三要自己生成操作語句,很麻煩.當然這些方法隻是對編輯界面,查詢就沒此問題.大家還有什麼更好的方法嗎?
 
不对指定的字段进行更新,设置 ProviderFlag属性?
去掉 pfInUpdate就可以了。
 
如果你用了ADO的缓冲功能,而且要保证不用经常的REQUERY刷新!!!
那么ADO就没有办法的!!!
 
wumeng所說的不对指定的字段进行更新,设置 ProviderFlag属性?
去掉 pfInUpdate就可以了。沒這么簡單,此路不通.
 
access+ado好象无法用updatebatch吧?
 
你试过 了没有 ??? 我一直都 是这么作的,要不你看李维的书。。。
 
后退
顶部