sql statement虛擬欄位,DataSet如何給值, 給QuickReport用? |
尚未結案
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
引言: select ID,null as vOperator from table 在TADODataSet中, 使用上述的sql, 我要如何在程式中vOperator給值,然後給QRDBText使用?pedro 你好 1.因為使用虛擬欄位,故CusorLocation必須設為clUseClient 2.SQL.text := 'select ID,'' '' as vOperator from table'; 表示建立Char(4)的欄位 3.SQL.text := 'select ID,0 as vOperator from table'; 表示建立Integer的欄位 4.SQL.text := 'select ID,0.0 as vOperator from table'; 表示建立Float的欄位 |
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
謝謝Chance36,deity兄的指導, 不過Chance36兄,CursorLocation為clUseClient並不能使虛擬欄位能給值, 是否我那裡有錯誤?
ADODataSet1.Close; ADODataSet1.CommandText:='select CS_Seq,'' '' as vOperator from table; ADODataSet1.CursorLocation:=clUseClient; ADODataSet1.Open; ADODataSet1.Edit; ADODataSet1.FieldByName('vOperator').AsString:='aaaa'; //Error Field cannot be modified |
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
pedro 你好 不好意思,讓你白忙一埸了,映像中ADO好像可以作離線作業,經我實際測試了一下,確實可以,除了以上所述之外,把LockType設為ltBatchOptimistic就可以了,但所有無法更新回資料庫的欄位(如虛擬欄位或集總欄位...)還是不準修改的,它應該是假設所有資料的修改終歸是要更新回資料庫的,所以即使是離線狀況下還是要做好把關的工作。 如此看來還是要搬出TClientDataSet來,才有辦法解決了,我一直也都是使用CLientdataSet處理這些問題的,所以ADO的解決方案,反而不是這麼熟悉。
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
pedro 你好 1.資料集元件關聯
TAdoDataset->TDataSetProvider->TClientDataSet
2.TDataSetprovide.options = TDataSetprovide.options [AllowCommandText];//加上這個屬性
3.ClientdataSet1.CommandText := 'select CS_Seq,'' '' as vOperator from table';
ClientDataset1.LogChanges := False; // 不產生Delta資料
ClientdataSet1.Open;
ClientDataSet1.Edit;
ClientDataSet1.FieldByName('vOperator').AsString:='aaaa';
ClientDataSet1.Post;
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |