我使用C ++ Builder 6.0
我使用TADODataSet执行以下SQL语句:
SELECT Id, SUM(Saldo) AS Saldo
FROM Table
GROUP BY Id
我仅将此DataSet用于报告。无需将更新日期更新回数据库。 当我尝试修改字段“Saldo”
时adospCard->Edit();
adospCard->FieldByName("Saldo")->AsFloat=0.0;
adospCard->Post();
我收到错误: Field'Saldo'无法修改。 我添加了这一行
adospCard->FieldByName("Saldo")->ReadOnly=false;
并且错误不再发生,但字段'Saldo'没有改变。
adospCard->Edit();
//adospCard->FieldByName("Saldo")->AsFloat=1536.5
adospCard->FieldByName("Saldo")->AsFloat=0.0;
//adospCard->FieldByName("Saldo")->AsFloat=0
adospCard->Post();
//adospCard->FieldByName("Saldo")->AsFloat=1536.5
如何改变'Saldo'字段值?
答案 0 :(得分:2)
答案 1 :(得分:1)
正如ldsandon所说,你无法修改计算出来的“Saldo”字段。 如果你需要在Id为“某事”时将值设置为零,那么最好在查询中执行此操作。最佳方法取决于将值设置为零的标准。
或者,将原始查询的结果保存在临时表中,然后在将结果返回到报告之前对其进行修改。
最后,您使用的报告工具是什么?渲染报告时,这可以改变“Saldo = 0”吗?
答案 2 :(得分:1)
考虑将结果存储在ClientDataset中 - 如果可以肯定结果不是太大。
我不使用“TADODataSet”,因此以下内容可能不适用:)...
当我使用我选择的数据库(即Advantage数据库服务器)执行相同(或类似)时,我会使用INTO子句,尽管它使用TSQLQuery组件(启用了RequestLive属性)。例如:
SELECT Id,SUM(Saldo)AS Saldo INTO #TempTable FROM Table GROUP BY Id