Преимущество использования DBComboBox перед CombBox? - PullRequest
3 голосов
/ 31 августа 2010

Так что я возиться с новым проектом в Delphi 2009 и компонентами по умолчанию, которые можно поместить в форму для доступа к данным, состоят из SQLConnection, DataSource и SQLQuery.Если я добавлю простой выбор к компоненту запроса, скажем:

select name from customers

, а затем перетащу DBComboBox в форму и свяжу его с источником данных, я получу одну запись в поле со списком.После полуторачасового использования Google, чтобы выяснить, что я делаю неправильно, похоже, вам нужно вручную добавить код в ваш проект, который просматривает набор данных и добавляет все записи в выпадающий список.Что-то вроде:

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

И это действительно работает, но в выпадающем списке вы получите список, из которого вы ничего не сможете выбрать.Независимо от результата, хотя мне интересно, зачем вам вообще использовать DBComboBox, если вам нужно вручную добавить к нему результат вашего запроса?Мне кажется, что если он не заполняет автоматически поле со списком db с результатом запроса, то мы могли бы также использовать компонент, не поддерживающий данные, такой как tcombobox.

Наверное, я спрашиваю, почему это так работает?Разве цель данных - не перетаскивать элементы управления, чтобы минимизировать объем написанного кода и ускорить разработку?Есть ли метод, который мне не хватает, который должен облегчить это?

Ответы [ 3 ]

11 голосов
/ 31 августа 2010

TDBComboBox не получает свой список значений из базы данных;он получает текущее значение из базы данных.Свяжите его с полем в наборе данных, и при изменении активной записи текущее значение поля со списком изменится.Измените текущее значение поля со списком, и значение соответствующего поля изменится.

Если вы также хотите получить список значений из базы данных, используйте TDBLookupComboBox.

Это всев справке:

4 голосов
/ 31 августа 2010

Я думаю, что вы хотите TDBLookupComboBox , потому что это позволяет вам искать из списка элементов, где список происходит из набора данных.

В TDBComboBox список - это просто TStringsзаполняется вручную данными.

- jeroen

0 голосов
/ 31 августа 2010

DbCombox - это версия стандартного комбо-компонента dbaware.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...