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

fkCalculated 性質的欄位 size 屬性如何動態自動調整 ?

缺席
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-10 23:59:07 IP:211.20.xxx.xxx 未訂閱
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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-11 21:03:57 IP:218.32.xxx.xxx 未訂閱
Persistent Field 的資訊是存於 dfm 檔中, 而且要依據什麼, "自動"調整 ? 所以個人認為, 只能用 Case by case 的自寫工具, 掃過並更改所有相關的 dfm 檔.
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-12 08:24:26 IP:202.39.xxx.xxx 未訂閱
fkCalculated 類的欄位應該不能使用者輸入 那能不能一開始就設很大 就不會有被截掉的問題? 還是這欄位都用動態產生的方式?    -- 分擔可以輕省, 分享帶來喜樂!
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-13 18:49:10 IP:61.59.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-04-13 21:38:39 IP:61.59.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-04-14 09:33:07 IP:210.64.xxx.xxx 未訂閱
你好 可以用指定Field.Size就可以了!!但是要先close Dataset然後再Open;!!試試看吧!! Pillar Wang
------
Pillar Wang
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-04-14 11:43:50 IP:211.22.xxx.xxx 未訂閱
引言: 可以用指定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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-04-14 13:31:32 IP:210.64.xxx.xxx 未訂閱
你好 請問資料庫調整是指調整欄位的長度嗎?那前端的dataset有事先add field嗎??還是只有下sql語法然後打開呢??目前來看如果完全不改程式應該是不可能作到!!如果你有用繼承的方式,那可以在parant form裡面加入程式,在form create的時候,先close open一次,判斷欄位長度之後,再調整計算欄位的長度,重新給過之後,在將dataset開啟!!如果沒有用繼承的方式,那只好用一段procedure去每個畫面開啟的時候先處理過!! 不知道這樣可以嗎?? Pillar Wang
------
Pillar Wang
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-04-14 23:45:57 IP:61.59.xxx.xxx 未訂閱
引言: 請問資料庫調整是指調整欄位的長度嗎? 那前端的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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-04-15 08:46:12 IP:210.64.xxx.xxx 未訂閱
你好 對啊,有點象是程式產生器加上對應資料庫調整的處理!!呵呵,可以開發一套出來試試看喔!! Pillar Wang
------
Pillar Wang
系統時間:2024-08-07 2:17:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!