c++builder - Повторяющиеся значения в ComboBox


0

Помогите, пожалуйста, разобраться с такой проблемой.

Мне нужно в Items ComboBox-а занести значения столбца "Марка" из базы Access таблицы "Auto", игнорируя повторяющиеся. Использую TADOConnection, TADOTable, TDataSource.

Нашел подобный код на DELFI, переписать под С++ что-то не получилось. Заранее спасибо.

Код добавления значений из БД в ComboBox

Form1->Auto->First();
while (!Form1->Auto->Eof)
{
    ComboBox1->Items->Add(Form1->Auto->FieldByName("Марка")->AsString);
    Form1->Auto->Next();
}
Источник
  •  464
  •  1
  • 5 янв 2012 2012-01-05 12:38:09
TDBComboBox проблему не решит. Если использовать TDBComboBox он выводит все значения из базы, тоесть если етсть в базе повторающиеся то и в TDBComboBox они тоже будут — 5 янв 20122012-01-05 13:03:55.000000
Это вопрос на форум фриланс :-) — 5 янв 20122012-01-05 12:32:34.000000
Не пробовали пользовать TDBComboBox? — 5 янв 20122012-01-05 12:29:19.000000
А вот как проигноривать повторяющиеся, не знаю. Пробовал IF для сравнения ComboBox1->Items[i]==Auto->FieldByName("Марка")->AsString Выдает ошибку: что-то связоное с Items[i] — 5 янв 20122012-01-05 11:03:41.000000

1 ответ

1

исходя что у Вас БД Access, можно следующее:

  1. делаешь запрос в БД - так как пишу быстро не проверяя то могу и ошибится:

    select dictinct Marka, ID from Auto
    
  2. в Билдере добавляешь на форму связку TADOConnection->TADOQuery(связанную с запросом из БД Аксесс) либо TADODataSet->TDataSource->TDBComboBox

А решил таким способом: Form1->Auto->First(); while (!Form1->Auto->Eof) { if (ComboBox1->Items->IndexOf(Form1->Auto->FieldByName("Марка")->AsString)==-1) {ComboBox1->Items->Add(Form1->Auto->FieldByName("Марка")->AsString);} Form1->Auto->Next(); } — 14 янв 20132013-01-14 12:01:15.000000
каким образом решил? — 6 янв 20122012-01-06 06:45:57.000000
Спасиба за ответ. Я решил свою проблему. — 6 янв 20122012-01-06 06:31:19.000000
и кстати в заметке ComboBox1->Items[i]==Auto->FieldByName("Марка")->AsString идет сравнение елемента из списка а не значение... хотя... сорри давно не кодил под VCL — 5 янв 20122012-01-05 13:50:53.000000