Wolfgang Chien's Homepage | Delphi學習筆記 - 問答篇 |
在Borland的Ti2790中曾提及如何在執行時期(Run-Time)開啟TField物件,其中說到必需在Create後設定TField之FieldName,Index,DataSet及Name,並在設完後Update我的Dataset之FieldDefs,可是DataSet一Open後總是獲得這樣訊息"EDataBaseError,xxx欄位不是預期中的欄位",有人知道這是怎麼一回事嗎?
在 RunTime 動態產生的 TField, 大致可分為兩類, 分別有不同的注意事項:
在 RunTime 新增的 TField, 如果是原來的 DataSet 中沒有的欄位, 那在您 Create 之後, 除了 TI2790 中提到的那幾個重要屬性之外, 還必須將Calculated 這個屬性設為 True, 否則, 就會出現您上述的述息. (本來就沒有這個欄位啊! 它的值應該由 OnCalculated 事件來處理, 不是嗎?)
如果是原來 DataSet 中既有的欄位, 只是在設計階段利用 Field Editor加入欄位時沒有加入, 那 RunTime 時要動態產生這些 TField 時, 要注意的除了 TI2790 提到的之外, 您還要注意型態與資料長度是否相符, 例如:如果有個欄位是 Character(30), 那在 Create 後, 假如留置 Size 屬性不管, 或者設為 20, 就會得到一個 '欄位 XXXX 不是一個預期的型態' 之類的例外訊息.
首頁 | 學習筆記 | 主題公園 | 軟體下載 | 關於本站 | 討論信群 | 相約下次 |