青
青云
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的字段属性来处理;