2015-04-15 54 views
1

我需要實現一個組合框,它綁定到TpFIBDataSetTDataSet的後裔)。我以前做過幾次。如果它只包含預定義的值,這不是一件大事。如何實現一個TDataSet綁定組合框與不在列表值

這一次,我想要一個接受用戶輸入的自定義值的組合框,也允許用戶選擇一些預定義的值。剛輸入的值應該在張貼組合框的字段所屬的記錄之前插入數據庫的某個表中。

主要的問題在我看來,是預先定義的值在內部表示爲整數ID(我用的是組合框是羅伊·沃爾的InfoPowerTwwDBComboBox,因爲它實現了MAPLIST功能),因爲該領域是一個外鍵,而自定義值可能幾乎全部(僅限於掩碼)。
如何區分整數ID和整數用戶輸入,例如?

參見組合框的集合屬性:

AComboBox.Style := csDropDown; 
AComboBox.MapList := True; 

我不請求溶液作爲藉此一段代碼和快樂。我寧願尋找可能有問題或有類似問題的人的一些建議。

回答

0

如何區分整數ID和整數用戶輸入,例如?

您回到數據庫。直接查詢select count(*) from table where id = ComboBoxId
或使用數據集的Locate方法。
或者將緩存保存在MyList: TList<Integer>中,並執行MyList.BinarySearch以查看該項是否已經在數據庫中。
顯然緩存只有在數據庫是單用戶的情況下才會起作用,否則您將無法使其保持最新狀態。

如果它不在數據庫中,則運行插入查詢。 插入後,您將運行默認的組合框行爲,因爲現在值肯定會在數據庫中。

+0

如果用戶輸入是一個整數值,那麼內部已經將其用作另一個整數值的ID? –

相關問題