[英]Trying to modify read-only DataSet field
我使用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();
我收到錯誤:字段'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'場地價值?
正如ldsandon所說,你不能在計算時修改“Saldo”字段。 如果你需要在Id為“某事”時將值設置為零,那么最好在查詢中執行此操作。 最佳方法取決於將值設置為零的標准。
或者,將原始查詢的結果保存在臨時表中,然后在將結果返回到報表之前進行修改。
最后,您使用的報告工具是什么? 在渲染報告時,這可以改變“Saldo = 0”嗎?
考慮將結果存儲在ClientDataset中 - 如果可以肯定結果不是太大。
我不使用“TADODataSet”,因此以下內容可能不適用:)...
當我使用我選擇的數據庫(即Advantage數據庫服務器)執行相同(或類似)時,我會使用INTO子句,盡管它使用TSQLQuery組件(啟用了RequestLive屬性)。 例如:
SELECT Id,SUM(Saldo)AS Saldo INTO #TempTable FROM Table GROUP BY Id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.