如何在AdoQuery里修改虚拟字段的值(20)

  • 主题发起人 主题发起人 青云
  • 开始时间 开始时间

青云

Unregistered / Unconfirmed
GUEST, unregistred user!
有时候为了处理数据方便,需要在DataSet上虚拟一个字段,最常见的就是勾选;这个字段只是在客户端的DataSet上做个标记,而不提交我的做法是:1.设置了AdoQuery.LockType:= ltBatchOptimistic;这样post的时候数据就不会提交;2.设置sql: AdoQuery.Sql.Text:='select " " as x,a.* from a ';3.AdoQuery.open; 4.设置 AdoQuery.Fields[0].ReadOnly:=False;然后运行,通过DbGrid修改x这个虚拟字段的值。 发现一旦post,修改的值就自动丢掉;为此,我把AdoQuery.Sql.Text修改了一下,包了一层,修改成:AdoQuery.Sql.Text:='select * from (select " " as x,a.* from a) ';然后再测试,惊喜的发现OK了!但是,这个方法仅仅适用于oracle数据库;对于mssql,access仍然不行;于是我尝试各种方法,通过修改adoQuery的各种属性都不行;这个问题,是一个网友昨天问我的。其实,我很久以前就不用Ado这个数据驱动;如果用ClentDataSet就不会有这样的问题;还有些“笨”一些的变通方法,比如在数据库的表里多一个字段;后者在mssql里用临时表处理;不过我感觉这些方法都是“怪怪的”,很不好;最好的方法还是通过更改adoQuery的字段属性来处理;
 
http://bbs.2ccc.com/topic.asp?topicid=314569
 
不能修改
 
提供一个思路,还没有实现.可以借用计算字段故+表格的行选,在dataset.Oncalcfields中处理.但我不知道如何判断某行是否被选中.
 
用ADO很难搞,但可以导到ClientDataSet,不过需要自己修改Provider.pas,不然它还是会设置字段的只读属性.你可以看我的New Midas Library,虽然还是有这种问题,但改一下很快的
 
后退
顶部