fkCalculated 性質的欄位 size 屬性如何動態自動調整 ? |
缺席
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
fkCalculated 性質的欄位, 一般來說再設計時期就要先指定好 size 大小.
例如一個 TStringFiled size = 20 當然在 TQuery 的 OnCalcFields 事件會指定其 Value . 但是如果所讀取的資料來源的 size 有變動如 20 -> 30 , 那就要將全部程式的同一欄位都要手動調整, 沒調整資料的長度就會被截斷. 系統小到是還好一個一個去手動調整, 要是系統有幾百支程式有一半以上都有用到, 那可就很花時間了, 也很容易發生錯誤. 不知有何技巧, 可以不必在乎後端資料欄位寬度的變動,讓程式會自動校正欄位 size 來處理掉這個問題呢? 雪龍
http://bestlong.no-ip.com/
學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
引言: Persistent Field 的資訊是存於 dfm 檔中, 而且要依據什麼, "自動"調整 ? 所以個人認為, 只能用 Case by case 的自寫工具, 掃過並更改所有相關的 dfm 檔.我知道此種處理方式, 不過這樣的處理方案, 好像要有兩個必要條件: 1. 有詳細的程式說明文件, 能知道所有的欄位資訊的來龍去脈. 2. DFM 檔案是採用 text 格式儲存的. 慘的是以上兩點在我所接手的原始碼都不具備, 只好地毯式處理. 也有了這個疑問, 看看有沒有人處理此一需求. 雪龍 http://bestlong.no-ip.com/ 學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
引言: fkCalculated 類的欄位應該不能使用者輸入 那能不能一開始就設很大,就不會有被截掉的問題? 還是這欄位都用動態產生的方式?一開始 size 設很大, 會造成記憶體耗用. 這是在設計時期就建立的欄位. 雪龍 http://bestlong.no-ip.com/ 學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
pillar62
資深會員 發表:9 回覆:324 積分:271 註冊:2002-04-15 發送簡訊給我 |
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
引言: 可以用指定Field.Size就可以了!!但是要先close Dataset然後再Open;!!試試看吧!!你說到的是我所想到的基本部份, 在 RunTime 時期可以在 Open DataSet 前將所有的 fkCalculated 性質的欄位的 size 先進行調整.不過這個過程一定不能在 OnCalcFields 事件中處理, 不然會死的很慘. 另外回到題目本身,其中所說的自動調整, 我的目標是不必重新更改程式並重新編譯, 而是只要後端資料庫有調整, 程式就會在執行時自動校正. 雪龍 http://bestlong.no-ip.com/ 學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
pillar62
資深會員 發表:9 回覆:324 積分:271 註冊:2002-04-15 發送簡訊給我 |
你好
請問資料庫調整是指調整欄位的長度嗎?那前端的dataset有事先add field嗎??還是只有下sql語法然後打開呢??目前來看如果完全不改程式應該是不可能作到!!如果你有用繼承的方式,那可以在parant form裡面加入程式,在form create的時候,先close open一次,判斷欄位長度之後,再調整計算欄位的長度,重新給過之後,在將dataset開啟!!如果沒有用繼承的方式,那只好用一段procedure去每個畫面開啟的時候先處理過!! 不知道這樣可以嗎?? Pillar Wang
------
Pillar Wang |
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
引言: 請問資料庫調整是指調整欄位的長度嗎? 那前端的dataset有事先add field嗎? 還是只有下sql語法然後打開呢? 目前來看如果完全不改程式應該是不可能作到!!如果你有用繼承的方式,那可以在parant form裡面加入程式,在form create的時候,先close open一次,判斷欄位長度之後,再調整計算欄位的長度,重新給過之後,在將dataset開啟!!如果沒有用繼承的方式,那只好用一段procedure去每個畫面開啟的時候先處理過!! 不知道這樣可以嗎??你好 在程式的部份是使用繼承的方式沒錯. 也是想在基礎Form中解決此需求. 不過在資料來源的 FieldName 會有與 fkCalculated 欄位不同名的狀況, 另外更複雜的還有多個資料源情形, 簡單的思考起來,等於還要建立一個對照表來處理. 困難度非常高. 現在想一想, 好像有點進入了程式生成系統架構中的部分功能. 只要將後端資料庫的相關設定調整過, 前端的程式就會依據後端的設定資料自動校正. 雪龍 http://bestlong.no-ip.com/ 學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
pillar62
資深會員 發表:9 回覆:324 積分:271 註冊:2002-04-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |