如何使Query的结果成为一个可更新的数据集?(100分)

  • 主题发起人 主题发起人 huangguohui5132
  • 开始时间 开始时间
H

huangguohui5132

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用delphi自带的数据库pardox建立一个表,然后用Query过滤,得到的结果是一个只读的。
把他的属性requestlive设为true仍无效。不知是怎么回事,希望得到大家的帮助,万分
感激!!!!!!!!!!!!!
 
query.edit
这样呢?另外你的SQL语句可能使用了某些类型转化函数或者order by什么的,如果
非要这么用,则使用UpdateSQL控件来解决。
 
对单表的 select ..,query.requestlive能设为true,也可以编辑和修改,
对多表连接的select...就没办法了
 
对单表的 select ..,query.requestlive能设为true,也可以编辑和修改,
对多表连接的select...就没办法了
你可以使用UpdateSQL控件来解决
 
在HELP中对RequestLive是这样描述的:
Set RequestLive to True to request a live result set. Setting RequestLive to True
does not guarantee that a live result set is returned by the BDE. The BDE returns
a live result set only if the SELECT syntax of the query conforms to the syntax
requirements for a live result set.
If RequestLive is True, but the syntax does not conform to the requirements, the BDE
returns a read-only result set for Paradox or dBASE, or an error return code for
remote servers.
After activating the TQuery, inspect the CanModify property to determine whether the
request for a live result set was successful.
Note:
All multi-table queries return read-only result sets. Other conditions
may cause a query to return a read-only result set. For local tables (such as dBASE
and Paradox), see the local SQL help file for rules governing live result sets (updatable
queries). For other table types (such as InterBase, Oracle, and Sybase), consult the
documentation for the specific database system.
这就说明返回的结果集是否可编辑是有条件的,但这并不能说返回的结果集绝对不可编辑。通过一定
的方法可以说所有的结果集都是可编辑的。这就是通过设置TQUERY的CachedUpdates:=TRUE;
然后设置属性UpdateObject:=UpdateSQL其中UpdateSQL为一TUpdateSQL对象。
设置这两个属性后就可以通过TUpdateSQL的方法进行数据的各种处理。
在DFW上有过讨论,具体的最好去看HELP
 
windbell的回答是正确的
 
to huangguohui51321:
这是因为设置了Requestlive =true,并不能绝对保证可以编辑。你看看帮助就知道了。
如果要有可编辑功能,你可以放置一个 TupdataSQL控件到窗体上,然后
设置 Dbgrid1的属性UpdateObject:=UpdateSQL1;就可保证可以进行修改。
 
谢谢大家
 
后退
顶部