|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Банальная проблема DBComboBox
Всем доброго времени суток, в делфях работаю очень редко и вот в данный момент прям не как без них, в общем делаю курсач по БД и нужно написать программку и вот не как не могу заставить правильно работать DBComboBox, база у меня на MSSQL подключаю через ADOConnection, ADOQuery, DataSource ну и на табличку к примеру вешаю (DBGrid), но вот не как не могу правильно подключить (или в цикле проблема) DBComboBoх в общем подключаю так что у меня выводится только первый элемент из базы, как я понял нужно написать цикл (гугление сказало тоже самое)
Вот что у меня вышло : Код:
procedure TForm1.DBComboBox1Change(Sender: TObject); begin ADOQueryCOMBOProduct.First; DBComboBox1.Items.Clear; // чистим While not ADOQueryCOMBOProduct.EOF do begin DBComboBox1.Items.Add(ADOQueryCOMBOProduct.FieldByName('name_product').AsString); ADOQueryCOMBOProduct.Next; // го на следующего end; end; поправьте что не так плиз ребят, уж очень срочно надо! заранее спасибо Последний раз редактировалось kirill.psl, 28.05.2010 в 18:38. |
#2
|
||||
|
||||
Намного проще было-бы если бы вы воспользовались DBLookupComboBox. Там заполнение списка идет автоматом.
А вот почему в вашем варианте только первая запись выводится, я затрудняюсь сказать. Написано все правильно, должно выводить все. Единственное предположение, это что-то у вас либо с запросом, ограничение по условию или по кол-ву возвращаемых данных или же ADOQueryCOMBOProduct завязан на другую таблицу/запрос. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 28.05.2010 в 18:43. |
#3
|
|||
|
|||
так, а поподробней, как с ним (DBLookupComboBox) работать не подскажете?
П.с. только вот решил его попробовать и тут Вы сразу отвечаете в тему =) |
#4
|
|||
|
|||
Организовал через DBLookupComboBox
Нужно указать ListSource, ListField и KeyField. DataSource оставить пустым. И все заработало, а как выставить первоначально НЕ ПУСТОЕ значение? А к примеру текст написать "Выберите продукт" к примеру? |
#5
|
||||
|
||||
Что-бы добавить что от себя в список, можно для списка сделать запрос такого вида:
Код:
select -1,'<Выберите значение>' union select id,context from mytable order by id Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#6
|
|||
|
|||
у меня база mssql, как ввести из DBComboBox1 в нее? у меня щас вот такого рода код на кнопке стоит :
Код:
procedure TAddproduct.Button3Click(Sender: TObject); begin // Закрыть запрос Form1.QueryDynamic.Close; // Очистить массив строк для размещения // текста запроса Form1.QueryDynamic.SQL.Clear; // Сформировать строку с текстом запроса sql:= 'insert into product (id_category, id_proizvoditel,name_product) values (DBLookupComboBox1.Text, DBLookupComboBox2.Text, '''+ Edit1.Text +''');'; // Вывести текст запроса на экран application.MessageBox(PChar(sql), 'Текст запроса',MB_OK); // Добавить стоку с текстом запроса Form1.QueryDynamic.SQL.Add(sql); try // Выполнить запрос Form1.QueryDynamic.Open; // Обработать возможные ошибки // при выполнении запроса except application.MessageBox( 'Не могу выполнить запрос', 'Ошибка',MB_OK); end; end; DBLookupComboBox2 как Edit1 с добавоением .Text не хочет работать у меня там сделанно так : ListField (то что показывает в списке - "Продукт") и KeyField(id того что показывает в списке "ID_Продукт") нужно именно KeyField ввести мне... как сделать не знаю... |