一查询如下:
Select a,b,c,d,e, cast(0,int) as f1 From table 其中f1为计算列,想在表格控件中使这列能修改(并不期望保存,有其它用途),请问如何才能实现?该字段只是用于让用户输入,数据库中并没有实际的f1字段,我也不保存该数据入库,但在客户端将ClientDataSet和表格的该字段readonly设为false后,用户能输入,但一旦离开单元格,数据库就报f1字段只读不能修改错误。程序背景:(com+):adoConnection,adoDataSet,DataSetProvider
          (client):ClientDataSet + 茶壶表格真的很急,再次先谢过朋友们的路过,如暂不能解决的朋友请帮忙提前一下,谢谢

解决方案 »

  1.   

    你用:Select a,b,c,d,e From table 。
    然后在数据集加一个计算字段f1,然后写个代码:f1=0.就可以了,你不要告诉我你在DELPHI的数据集里不会添加字段 哦。呵。
      

  2.   

    一個最直的辦法﹕在中間層對應的表中,如前台一樣定義字段﹐
    然后修改f1的readonly 改為 false.回到前台時,定義的字段readonly 自然是false.一定不會出現你說的問題.
      

  3.   

    我没叙述清楚:
      我的sql是在中间层动态组织的,客户端和中间层都没有添加永久字段,而且为了程序的扩展性(该部分是通用型),客户端只用到了ClientDataSet的Data属性,为了方便数据显示也就采取了茶壶数据感知表格控件。所以没有采取手动添加任何字段的方法,包括需要计算的合计、公式列等都是动态在程序里边处理的,当初想过在程序里通过代码添加永久字段,但这样一来程序的代码就会增加无谓的复杂度,且灵活性(该界面要供几十个窗口使用,故可扩展性放在了第一位)和稳定性可能会降低。我的要求虽有点过分,但很简单:只要能让用户手动编辑通过sql算出来的列f1,其他不要做任何处理,效果如同在StringGrid中录入普通单元格的效果就行
    先谢谢楼上几位兄弟的关注,请朋友们继续