Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Базы данных > Sql->Combobox


Автор: Mewer 7.6.2008, 10:22
Товарищи, вопрос: имеется таблица "Author" состоящая из ID и Name. Необходимо заполнить Combobox именами из таблицы.
пробовал:
Код

ADOQuery1->IndexName="Name";
 for(int i=0;i<ADOQuery1->IndexFieldCount;i++)
 {Form2->ComboBox1->AddItem(ADOQuery1->IndexFields[i]->FieldName,Form2->ComboBox1);}


но пишет "текущий проводник не поддерживает необходимый интерфейс для функции Index"

есть идеи? smile 

Автор: Данкинг 7.6.2008, 10:40
Проходи циклом по таблице, да заполняй. ИМХО иначе никак.

Автор: Mewer 7.6.2008, 11:19
а мой код не так делает? smile  smile 

Автор: Данкинг 7.6.2008, 11:28
Цитата(Mewer @  7.6.2008,  12:19 Найти цитируемый пост)
а мой код не так делает?

Верно, не заметил. smile Но всё же используй форматирование кода, чтобы читать его было легче!  smile 

Код

ComboBox1->Items->Add(ADOQuery1->FieldValues['NAME']);

Автор: Mewer 7.6.2008, 11:33
Вопрос остаётся открытым) smile 

Автор: Данкинг 7.6.2008, 11:43
Ну да, ещё нужно сначала встать на первую запись:

Код

ADOQuery1->First


А после каждого добавления переходить на следующую запись:

Код

ADOQuery1->Next


А цикл делать до 

Код

ADOQuery1->RecordCount

Автор: Mewer 7.6.2008, 11:56
Вобщем ADOQuery(clUseServer) соединён с ADOConnection(clUseClient), но при выполнении вышеприведённого Данкинг кода выдаёт ошибку ADOQuery:Field '1315007845' Not Found

Автор: Данкинг 7.6.2008, 12:07
В общем, вот пример на Дельфи, на Билдер сам его переведёшь, думаю.  smile 

Код

ADOQuery1.first;
for i:=1 to ADOQuery1.recordcount do
 begin
 ComboBox1.Items.Add(ADOQuery1.Fieldvalues['name']);
 ADOQuery1.next;
 end;

Автор: mrbrooks 7.6.2008, 12:11
Модератор: Сообщение скрыто.

Автор: Mewer 7.6.2008, 12:28
Код

ADOQuery1->First();
 while(ADOQuery1->RecordCount)
 { Form2->ComboBox1->Items->Add(ADOQuery1->FieldValues['ID']);
  ADOQuery1->Next();


не пашет.
mrbrooks, а как? smile 

Автор: mrbrooks 7.6.2008, 12:39
Дык яж дописал  smile 
Повторюсь:

Код

ADOConnection->GetFieldNames( "Author" , ComboBox1->Items);

Автор: Mewer 7.6.2008, 12:58
mrbrooks, а как ADOConnection указать, из какой таблицы брать данные? smile 

Автор: mrbrooks 7.6.2008, 13:11
Цитата(Mewer @ 7.6.2008,  12:58)
mrbrooks, а как ADOConnection указать, из какой таблицы брать данные? smile

ADOConnection->GetFieldNames( "ИМЯ_ТВОЕЙ_ТАБЛИЦЫ" , ComboBox1->Items);

В ADOConnection->ConnectionString указываешь на свою БД. 

Автор: Mewer 7.6.2008, 13:16
 smile  предыдущий вопрос опускаю smile .. Как указать ADOConnection из какого столбца нужно выбрать ? пока пишет"Объект или поставщик не может выполнить требуемую операцию" smile  smile 

Автор: mrbrooks 7.6.2008, 13:22
Вот этого вопроса я не понял.

Автор: Mewer 7.6.2008, 13:28
Цитата

имеется таблица "Author" состоящая из ID и Name


ну две же колонки, "ИД" и "НЭЙМ"

Автор: mrbrooks 7.6.2008, 13:37
Как - как:
 БД есть? - есть
 Таблица есть? - есть
 Все - компонент выведет тебе все поля таблицы в Бокс твой. 
 

Автор: Mewer 7.6.2008, 13:48
По видимому какие-то проблемы со связью с бд оракла, не пашет smile 

Автор: mrbrooks 7.6.2008, 14:28
Дык ты когда коннектишься к БД через ADO при тесте все нормуль?

Автор: Mewer 7.6.2008, 14:30
Надо было поменять поставщика данных), но вариант предложенный mrbrooks ничего не выводит, как быудто таблица пустая

Автор: mrbrooks 7.6.2008, 14:41
Гы. Ну знаешь ли. У всех нормально работает у тебя что то там не выходит. Кури мануал. Что тут еще посоветовать  smile 

Автор: Mewer 7.6.2008, 15:45
Интересно, что работает вариант
Код

 ADOConnection->GetTableNames(ComboBox1->Items);


а  ADOConnection->GetFieldNames( "Author" , ComboBox1->Items);

нет, в билдеровском хэлпе написано 
Цитата

The names of the fields are put into the already-existing string list object specified in the List parameter. 
 но вот что это за List parametr?

Добавлено через 1 минуту и 44 секунды
это я про параметры списка куда вставляются поля

Автор: mrbrooks 7.6.2008, 16:16
Модератор: Сообщение скрыто.

Автор: Mewer 7.6.2008, 16:40
тэээкс....я наверно неправильно объяснил smile  нужен список значений определённого поля, тогда нужно использовать вроде GetFieldList у таблицы например ADOTable, так?

Автор: Mewer 7.6.2008, 17:24
Всем спасибо) вопрос решён!

Данкинг спасибо)

Код

ADOTable2->First();
 for(int i=0;i<ADOTable2->RecordCount;i++)
 {ListBox1->Items->Add(ADOTable2->FieldValues["Title"]);

    ADOTable2->Next();}

Автор: Palladin 7.6.2008, 18:14
Я пар дней назад статью написал в ней аккурат такой пример былsmile
юзать статьи+Faq+исходники форума надо smile  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)