2010-08-31 41 views
3

所以我搞亂了Delphi 2009中的一個新項目,並且可以通過SQLConnection,DataSource和SQLQuery將默認組件拖放到表單中以訪問數據。如果我添加一個簡單的選擇到查詢組件,說:在CombBox上使用DBComboBox的好處?

select name from customers 

,然後在表單上放一個DBComboBox,並與數據源我得到在組合框中的一條記錄鏈接起來。在使用Google一半和一小時來弄清楚我做錯了什麼之後,看起來您必須手動向您的項目中添加一些代碼,這些代碼循環訪問數據集並將所有記錄添加到下拉框中。喜歡的東西:

while not SQLQuery.eof do 
begin 
    DBComboBox.items.add(SQLQuery.fieldbyname('name').asstring); 
    SQLQuery.next; 
end; 

而實際上這類作品,但你得到的下拉你不能真正選擇什麼列表。不管結果如何,但我想知道爲什麼如果您必須手動將查詢結果添加到它,爲什麼還要使用DBComboBox?在我看來,如果它不會自動用查詢結果填充數據庫組合框,那麼我們可能會使用像tcombobox這樣的非數據感知組件。

我想我問的是爲什麼它以這種方式工作?數據感知的拖放控件的目的不是爲了最大限度地減少實際編寫的代碼和開發速度?有沒有一種方法可以讓我更容易?

回答

11

TDBComboBox未從數據庫中獲取其值列表;它從數據庫獲得當前值的。將其鏈接到數據集中的字段,並且當您更改活動記錄時,組合框的當前值將會更改。更改組合框的當前值,並且相應字段的值將更改。

如果您還想從數據庫中獲取值列表,請使用TDBLookupComboBox。

這涵蓋的所有幫助:

+0

感謝羅布,澄清它。完全無關,但我的幫助文件以某種方式被殲滅時,我安裝MS Visual Studio的另一個項目(在C#)..還沒有想出如何讓我的Delphi幫助文件還沒有。但這是另一個線索的討論。 – Rafe 2010-08-31 19:06:14

4

我想你想的TDBLookupComboBox,因爲它允許您從項目列表查找列表來自數據集。

在TDBComboBox中,列表僅僅是手動填充數據的TStrings。

--jeroen

-1

DbCombox是標準組合框組件的數據感知版本。