Перейти к содержимому

Delphi dbcombobox как заполнить из бд

  • автор:

Delphi dbcombobox как заполнить из бд

Сообщений: 116

Правильное заполнение Combobox из запросов

На форме есть 3 Combobox, один из них заполняю при создании формы:

procedure FullList; var Query : TFDQuery; begin Query := TFDQuery.Create(nil); Query.Connection := DM.fdConn; Query.SQL.Clear; Query.Close; Query.SQL.Text := 'SELECT id, name FROM table'; Query.Open; Query.First; while not Query.Eof do begin cbTab1.Items.AddObject(Query.FieldByName('name').AsString, Pointer(Query.FieldByName('id').AsInteger)); Query.Next; end; Query.Free; end;

А вот остальные Combobox — необходимо заполнять из результата выбора значения заполненного при создании формы Combobox, точнее ‘id’.
itemIndex отличаются от значения id.

Есть у кого нибудь идеи?

Работа с combobox в Delphi

В базе данных есть таблица со вторичными ключами. На форме соответственно вторичные ключи выводятся в комбобоксы и заполняются, при этом после заполнения активный индекс в комбобоксе должен становится то значение, которое соответствует данной строке. Пример кода когда то работал, но спустя 2 года я не могу уже это повторить, ничего не понимаю, что я пропустил, он постоянно делает активным не то что нужно. Я никак не могу сопоставить индексы combobox с id вторичного ключа.

type_ob:=tstringlist.Create; adotable2.Active:=true; while not adotable2.eof do begin type_ob.Add(adotable2name_type_ob.value); adotable2.Next; end; Combobox2.Items.AddStrings(type_ob); Combobox2.ItemIndex:=0; showdata; 

Процедура showdata

i:=ADOQuery2id_type_ob.value; Combobox2.text:=(i); 

Отслеживать

13.7k 12 12 золотых знаков 43 43 серебряных знака 75 75 бронзовых знаков

Как правильно использовать DBLookupComboBox для выборки данных из таблицы (Delphi 7)?

Есть приложение с бд на access из двух таблиц. В приложении две формы, каждая из которой ссылается на таблицу.
В первой таблице хранится основная информация (ID) с расшифровкой (Name).
Вторая таблица — подчиненная. В ней хранится информация о дополнительных данных, описанных в таблице 1.

Надо сделать так, чтобы во второй форме поле «ID» заполнялось не от руки, а подхватывало значение поле «ID» из первой таблицы.
Для этого использовал компонент DBLookupComboBox, напихал на форму дополнительно ADOTable2 и DataSource2 для связи с первой таблицей.

Столкнулся с проблемой. Когда заполняю выпадающим списком поле DBLookupComboBox, программа в таблице создает новую запись с этим ID. А оставшиеся 3 поля в которых просто текст, идут в следующую строку, т.е. в запись №2. Из-за этого не могу сделать связи в БД (из-за того что ключевое поле получается пустым).

Получается сдвиг на одну строчку. Как сделать так, чтобы запись всех полей происходила ТОЛЬКО по нажатию кнопки добавить?

код для заполнения прописан:

procedure TForm2.Button1Click(Sender: TObject); begin ADOTable1.Insert; ADOTable1['id']:=DBLookupComboBox1.Text; ADOTable1['test1']:=Edit1.Text; ADOTable1['test2']:=Edit2.Text; ADOTable1['test3']:=Edit3.Text; ADOTable1.Post; begin Edit1.clear; Edit2.clear; Edit3.clear; end; end;

956054aebb24411db02c6273f0b6819a.jpg

Скрин и приложение прикрепляю.
P.s. приложение состряпал на скорую руку, возможно придется поправить пути в компонентах AdoTable.
Приложение

  • Вопрос задан более трёх лет назад
  • 4795 просмотров

Delphi dbcombobox как заполнить из бд


Шестаков Антон ( 2007-08-28 12:45 ) [0]

как из программы заполнить combobox, чтобы данные, которые я ввожу в edit.text, на другой форме отображались в combobox и сохранялись в нём. И как потом удалить эти данные из combobox?


Сергей М. © ( 2007-08-28 12:53 ) [1]

ComboBox.Items.Add(edit.text)


Шестаков Антон ( 2007-08-28 13:14 ) [2]

А чтобы combobox обновлялся? Я выхожу из программы, и снова запускаю её, а combobox пустой. ComboBox1.Update на событие onCreate не помогает


Сергей М. © ( 2007-08-28 13:16 ) [3]


> выхожу из программы, и снова запускаю её, а combobox пустой

Ну а почему ему не быть пустым ?
Ты же в него ничего не добавил при очередном запуске..
Вот после того как добавишь, так он тут же и перестанет быть пустым.


@!!ex © ( 2007-08-28 13:36 ) [4]

> [2] Шестаков Антон (28.08.07 13:14)

Items.SaveToFile
Items.LoadFromFile


Шестаков Антон ( 2007-08-28 13:55 ) [5]

А если этот файл это база данных dol.db? И надо чтобы значение одного столбца БД отображалось в combobox?


Сергей М. © ( 2007-08-28 13:58 ) [6]

Дл работы в составе БД-приложений имеется специально «заточенный» под это компонент TDBComboBox. Чем он тебе не угодил ?


© ( 2007-08-28 14:07 ) [7]

> [6] Сергей М. © (28.08.07 13:58)
> Дл работы в составе БД-приложений имеется специально «заточенный»
> под это компонент TDBComboBox. Чем он тебе не угодил ?

Дык он же не.

> А если этот файл это база данных dol.db? И надо чтобы значение
> одного столбца БД отображалось в combobox?

. отвечает требованиям 🙂 Есть еще всякие Лукапы.

> [5] Шестаков Антон (28.08.07 13:55)

Если табличка небольшая, то вначале работы программы пробежаться по всем записям и добавить их в комбик.


Юрий Зотов © ( 2007-08-28 14:12 ) [8]

> Шестаков Антон (28.08.07 13:55) [5]

Тогда, наверное, надо как-то связать этот комбобокс с этим столбцом, верно? Само же по себе ничего не отобразится, разве не так?

Вот и покажите, как Вы их связываете. Или используйте компоненты с вкладок Data Access и Data Controls.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *