線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1886
推到 Plurk!
推到 Facebook!

sql statement虛擬欄位,DataSet如何給值, 給QuickReport用?

尚未結案
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-07 16:56:50 IP:210.61.xxx.xxx 未訂閱
select ID,null as vOperator from table 在TADODataSet中, 使用上述的sql, 我要如何在程式中vOperator給值,然後給QRDBText使用?
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-07 17:10:20 IP:211.20.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-07 21:44:37 IP:219.129.xxx.xxx 未訂閱
你好,可参考: http://delphi.ktop.com.tw/topic.php?topic_id=47404 ——行径窄处,留一步与人行——
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-09 10:38:16 IP:210.61.xxx.xxx 未訂閱
謝謝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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-09 15:03:12 IP:211.20.xxx.xxx 未訂閱
pedro 你好 不好意思,讓你白忙一埸了,映像中ADO好像可以作離線作業,經我實際測試了一下,確實可以,除了以上所述之外,把LockType設為ltBatchOptimistic就可以了,但所有無法更新回資料庫的欄位(如虛擬欄位或集總欄位...)還是不準修改的,它應該是假設所有資料的修改終歸是要更新回資料庫的,所以即使是離線狀況下還是要做好把關的工作。 如此看來還是要搬出TClientDataSet來,才有辦法解決了,我一直也都是使用CLientdataSet處理這些問題的,所以ADO的解決方案,反而不是這麼熟悉。
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-09 15:44:29 IP:210.61.xxx.xxx 未訂閱
不不Chance36兄, 我只是用ADODataSet舉出我的問題點, 實驗上我要套用到TClientDataSet, 但我後端Provider是ADOQuery. 能否說說您用TClientDataSet虛擬欄位的作法, 還是如您所言, 虛擬欄位終歸不能異動?
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-09 16:55:04 IP:211.20.xxx.xxx 未訂閱
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;
系統時間:2024-05-17 13:34:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!