Аватар для son_yaa
0 / 0 / 1
Регистрация: 10.03.2018
Сообщений: 51
Delphi 6-7

Как заполнить ComboBox данными из TADOTable программно?

11.03.2018, 11:39. Показов 7260. Ответов 30

Студворк — интернет-сервис помощи студентам
У меня в программе список в таблице может пополняться.
ComboBox я использую для редактирования заказов. И в нем должен быть список вида заказов (который я пополнять буду периодически как мне это сделать? не знаю что лучше взять ComboBox , DBComboBox или DBLookupComboBox .
Просто прописать в инспекторе в св-ве Items не могу, т.к. список будет пополняться

пробовала так но не работает
Delphi
1
form21.suiDBLookupComboBox1.KeyValue := QueryPoliMes.DataSetField.Fields[4].Value;
вобщем в ComboBox или DBComboBox или DBLookupComboBox у меня должен быть список из таблицы
DataModule3.DataSource1
а при редактировании заказа у меня еще и значение должно ему присвоиться такое как в запросе QueryPoliMes соответствующее полю FieldByName('ВидПолиграфии')
Миниатюры
Как заполнить ComboBox данными из TADOTable программно?   Как заполнить ComboBox данными из TADOTable программно?  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.03.2018, 11:39
Ответы с готовыми решениями:

Как заполнить combobox данными для выбора?
Сделала форму кинула combobox.Как заполнить combo данными для выбора и как сделать, чтобы при выборе какого-либо пункта выходил отчет? ...

Как в combobox добавить значение key и value, а так же заполнить их данными?
Доброго дня. Перелазив интернет, так и не нашел как в форме дизайнера добавить значения с ключем. То бишь: petya, Петр fedya, Федор ...

Заполнить данными combobox в datagridview
Я новичок, не пинайте сильно... Заполняю данными dataGridView1 данными из таблицы Employees источник: dataGridView1.DataSource =...

30
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,425
Записей в блоге: 3
11.03.2018, 16:03
Вот бы еще вместо этих "веселых картинок" более внятное объяснение своей проблемы озвучить. безо всяких "вобщем"...
0
 Аватар для son_yaa
0 / 0 / 1
Регистрация: 10.03.2018
Сообщений: 51
11.03.2018, 16:26  [ТС]
Form21.suiDBComboBox1 должен заполняться списком из таблицы DataModule3.VidPoligrafiya.FieldByName(' ВидПолиграфии') и вот у меня там такой список, он должен быть в моем комбобоксе.
могу бросить программу
Миниатюры
Как заполнить ComboBox данными из TADOTable программно?  
0
5989 / 4564 / 1096
Регистрация: 29.08.2013
Сообщений: 28,207
Записей в блоге: 3
11.03.2018, 16:55
если совсем просто то DbLookupCombobox можно использовать
но SQL запросом проще
0
 Аватар для son_yaa
0 / 0 / 1
Регистрация: 10.03.2018
Сообщений: 51
11.03.2018, 17:14  [ТС]
для редактирования данных DbLookupCombobox не подходит.
как это сделать запросом?
0
5989 / 4564 / 1096
Регистрация: 29.08.2013
Сообщений: 28,207
Записей в блоге: 3
11.03.2018, 17:31
Цитата Сообщение от son_yaa Посмотреть сообщение
как это сделать запросом?
обычно
SQL
1
SELECT * FROM xxx WHERE
Добавлено через 19 секунд
подставьте свою колонку и свою таблицу
0
 Аватар для son_yaa
0 / 0 / 1
Регистрация: 10.03.2018
Сообщений: 51
12.03.2018, 07:27  [ТС]
да, согласна,можно так сделать, но мне нужно привязывать этот DBCombobox по DataSource с запросом, чтобы редактировать данные в нем (он у меня именно для этого в размещен на форме), но в список мне нужно прописать как-то программно то что у меня в таблице ВидПолиграфии (VidPoligrafiya)
вот что-то на подобие такого, но не работает так

Delphi
1
form21.suiDBComboBox11.Items:= form21.DataSource1.DataSet.FieldList;
DataSource1 относится к запросу, который подключен к таблице в которой содержится список для комбобокса
0
5989 / 4564 / 1096
Регистрация: 29.08.2013
Сообщений: 28,207
Записей в блоге: 3
12.03.2018, 07:31
Цитата Сообщение от son_yaa Посмотреть сообщение
чтобы редактировать данные в нем
данные обычно в Combobox не редактируют - это выпадающий список

ЗЫ 21 форма? сколько же у тебя query\connection и datasource? почему ты их не назовешь по смыслу?
0
 Аватар для son_yaa
0 / 0 / 1
Регистрация: 10.03.2018
Сообщений: 51
12.03.2018, 07:36  [ТС]
пробовала еще так, не работает
Delphi
1
2
3
form21.ADOQuery1.SQL.Text := 'SELECT * FROM ВидПолиграфии ';
form21.suiDBComboBox11.Items:= form21.ADOQuery1.SQL;
form21.ADOQuery1.Active:=true;
все запросы и датасоурсы у меня названы именами, это я сейчас начала пробовать с этим списком и еще не успела назвать

я не собираюсь редактировать список комбобокса, мне нужно чтобы он пополнялся когда на другой форме я добавляю данные в этом списке. а редактирование в том смысле что я открываю редактирование заказа и у меня к примеру был выбран в заказе "журнал" а мне нужно сменить его на "тетрадь" она тоже есть в этом списке
0
5989 / 4564 / 1096
Регистрация: 29.08.2013
Сообщений: 28,207
Записей в блоге: 3
12.03.2018, 08:13
Цитата Сообщение от son_yaa Посмотреть сообщение
form21.suiDBComboBox11.Items:= form21.ADOQuery1.SQL;
ну что это за фигня?
то что у них одинаковый тип не значит что так ты загрузишь одно в другое

form21.ADOQuery1.SQL - это просто текст запроса
form21.suiDBComboBox11.Items - это просто список элементов (не помню можно ли их руками менять или они вытягивается из DataSet'а)

Цитата Сообщение от son_yaa Посмотреть сообщение
мне нужно
не подскажу как оно делается с помощью DB* компонентов, я делаю все SQL запросами - сам заполняю, сам выбираю.
0
 Аватар для son_yaa
0 / 0 / 1
Регистрация: 10.03.2018
Сообщений: 51
20.03.2018, 21:07  [ТС]
помогите пожалуйста с заполнением ComboBox .

У меня в базе есть таблица со списком Дизайнеров, и мне нужно заполнить мой ComboBox их именами, т.к. список дизайнеров может меняться.
но что-то не получается

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Button1Click(Sender: TObject);
Var i,j:integer;
begin
j:=QueryDizajver.RecordCount;
QueryDizajver.Close;
QueryDizajver.Open;
QueryDizajver.First;
 for i:=1 to j do
 begin
 Combobox1.Items.Add(QueryDizajver.FieldByName('fio1' ).AsString);
QueryDizajver.Next;
 end;
Вложения
Тип файла: rar Макет.rar (509.6 Кб, 13 просмотров)
0
 Аватар для son_yaa
0 / 0 / 1
Регистрация: 10.03.2018
Сообщений: 51
20.03.2018, 21:14  [ТС]
вот пример набросала, но не работает
Вложения
Тип файла: rar Макет1.rar (507.7 Кб, 4 просмотров)
0
5989 / 4564 / 1096
Регистрация: 29.08.2013
Сообщений: 28,207
Записей в блоге: 3
20.03.2018, 21:19
Цитата Сообщение от son_yaa Посмотреть сообщение
QueryDizajver.RecordCount;
вот так не советую считать записи - так как если не указать выводить все записи в настройках (а об этом не все знают), то по умолчанию будет выводить по 50

Цитата Сообщение от son_yaa Посмотреть сообщение
QueryDizajver.First;
тоже не надо делать - при открытии все равно встаем на первую строку

вот так делается перебор
Delphi
1
2
3
4
5
QueryDizajver.Open;
while not QueryDizajver.EOF do begin
  Combobox1.Items.Add(QueryDizajver.FieldByName('fio1' ).AsString);
  QueryDizajver.Next;
end;
Цитата Сообщение от son_yaa Посмотреть сообщение
но что-то не получается
хотелось бы знать что именно

Добавлено через 1 минуту
Цитата Сообщение от son_yaa Посмотреть сообщение
вот пример набросала, но не работает
в третий раз говорю тебе - не задавай путь к базе данных на свой рабочий стол

почему бы в onShow формы не написать путь относительно твоего exe файла
тогда будет работать на любом компе
0
 Аватар для son_yaa
0 / 0 / 1
Регистрация: 10.03.2018
Сообщений: 51
20.03.2018, 21:23  [ТС]
Получилось вот так, но вначале показывает (ComboBox), а как сделать чтобы сразу была первая запись?

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Button1Click(Sender: TObject);
begin
 QueryDizajver.SQL.Clear ;
 QueryDizajver.SQL.Text:='SELECT fio1 FROM Dizajner';
 QueryDizajver.open;
 ComboBox1.Items.Clear;
 QueryDizajver.First;
  while (not QueryDizajver.Eof)  do
   begin
     ComboBox1.Items.AddObject(QueryDizajver.Fields[0].AsString,TObject(QueryDizajver.Fields[0].AsString));
      QueryDizajver.Next;
   end;
Добавлено через 37 секунд
а как задавать путь к базе правильно?
0
5989 / 4564 / 1096
Регистрация: 29.08.2013
Сообщений: 28,207
Записей в блоге: 3
20.03.2018, 21:59
Цитата Сообщение от son_yaa Посмотреть сообщение
QueryDizajver.First;
убери

Цитата Сообщение от son_yaa Посмотреть сообщение
а как сделать чтобы сразу была первая запись?
Delphi
1
Combobox.ItemIndex:=0;
Цитата Сообщение от son_yaa Посмотреть сообщение
а как задавать путь к базе правильно?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
procedure TForm1.Button1Click(Sender: TObject);
const
  //Файл БД располагается в папке DB, которая в свою очередь расположена в той же папке,
  //где лежит исполняемый файл программы.
  Fn = 'DB\db1.mdb';
var
  S, FileName : String;
begin
  ADOConnection1.Close;
  //Получаем полный путь к файлу БД с учётом текущего расположения исполняемого файла программы.
  FileName := ExtractFilePath(ParamStr(0)) + Fn;
  //Формируем строку соединения с учётом нового пути в файлу БД.
  S :=
    'Provider=Microsoft.Jet.OLEDB.4.0;'
    + 'Data Source="' + FileName + '";'
    + 'Mode=Share Deny None;'
    + 'User Id=;'
    + 'Password=;';
  //Записываем новую строку соединения.
  ADOConnection1.ConnectionString := S;
  //Открываем БД.
  ADOConnection1.Open;
end;
вот тут
Путь к БД
еще несколько способов
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,425
Записей в блоге: 3
21.03.2018, 06:07
Цитата Сообщение от son_yaa Посмотреть сообщение
а как задавать путь к базе правильно?
qwertehok все правильно написал и в общем случае лучше всего делать именно так. Но, т.к. у Вас файл БД лежит прямо рядом с самой Вашей программой, то достаточно в свойстве ConnectionString компонента ADOConnection1 убрать путь, оставив только имя файла БД. т.е. начало этой строки буде выглядеть так:
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=Baza.mdb;...
дальше так, как есть и больше нигде и ничего не меняем...
0
 Аватар для son_yaa
0 / 0 / 1
Регистрация: 10.03.2018
Сообщений: 51
21.03.2018, 06:57  [ТС]
а мне прописывать этот код при открытии моего DataModule? или при открытии каждой формы? .
кстати поменяла путь в ADOConnection1 , и после запуска он всеравно сменился на прежний.


и еще вопрос по ComboBox. У меня получилось заполнить его запросом, но я буду использовать это для редактирования данных своих и мне нужно начальное значение его заполнить данными из поля другого запроса, т.е. в ComboBox.Text прописать DataModule3.QueryPoliMes.Fields[9].AsString (ну что-то такое) но так не правильно.
как правильно написать?
0
 Аватар для son_yaa
0 / 0 / 1
Регистрация: 10.03.2018
Сообщений: 51
21.03.2018, 07:15  [ТС]
не конектит в DbGrid почему-то((

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
procedure TForm1.FormShow(Sender: TObject);
const
  //Файл БД располагается в папке DB, которая в свою очередь расположена в той же папке,
  //где лежит исполняемый файл программы.
  Fn = 'Baza.mdb';
var
  S, FileName : String;
begin
  ADOConnection1.Close;
  //Получаем полный путь к файлу БД с учётом текущего расположения исполняемого файла программы.
  FileName := ExtractFilePath(ParamStr(0)) + Fn;
  //Формируем строку соединения с учётом нового пути в файлу БД.
  S := 'Provider=Microsoft.Jet.OLEDB.4.0;'
    + 'Data Source="' + FileName + '";'
    + 'Mode=Share Deny None;'
    + 'User Id=;'
    + 'Password=;';
  //Записываем новую строку соединения.
  ADOConnection1.ConnectionString := S;
  //Открываем БД.
  ADOConnection1.Open;
 
//////// Заполняем ComboBox1 ///////
   QueryDizajver.SQL.Clear ;
 QueryDizajver.SQL.Text:='SELECT fio1 FROM Dizajner';
 QueryDizajver.open;
 ComboBox1.Items.Clear;
  while (not QueryDizajver.Eof)  do
   begin
     ComboBox1.Items.AddObject(QueryDizajver.Fields[0].AsString,TObject(QueryDizajver.Fields[0].AsString));
      QueryDizajver.Next;
   end;
 /////////////////////
 QueryNaruzhMes.SQL.Text:= 'SELECT * FROM ZakazNaruzh order by Data';
 QueryNaruzhMes.Active:=true;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var fio1, fio2: string;
i: integer;
s, dizajnerPoligr: string;
begin
QueryNaruzhMes.Edit;
/// ? ComboBox1.Items.Text:= QueryNaruzhMes.FieldValues
end;
Вложения
Тип файла: rar Макет.rar (563.6 Кб, 8 просмотров)
0
5989 / 4564 / 1096
Регистрация: 29.08.2013
Сообщений: 28,207
Записей в блоге: 3
21.03.2018, 10:28
Цитата Сообщение от son_yaa Посмотреть сообщение
не конектит в DbGrid почему-то((
проверяй значение ADOConnection1.ConnectionString
0
 Аватар для son_yaa
0 / 0 / 1
Регистрация: 10.03.2018
Сообщений: 51
21.03.2018, 21:00  [ТС]
в том то и проблема, что мне нужно как-то так привязать базу данных , чтобы она не слетала постоянно, точнее путь к ней не слетал. Попробовала сделать так как писали выше, но она вообще не конектится теперь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.03.2018, 21:00
Помогаю со студенческими работами здесь

Заполнить comboBox данными из Excel
Добрый день, уважаемые знатоки :) Прошу сильно не пинать, форум почитал, но не разобраться :-( Есть на форме комбобокс, значения для...

Заполнить Combobox данными из столбца БД
Добрый день :curtsy:! Я новичок в VB 6.0. Подскажите, как в VB 6.0 реализовать след. задачку: на форме размещен Combobox . Нужно, чтобы в...

Программно заполнить ComboBox
Здравствуйте! Возможно-ли программно заполнить список для ComboBox Items(редактор коллекции строк)? Если да, киньте пожалуйста...

Заполнить ComboBox данными из листа Excel
Как сделать, чтобы список составлялся из данных на листе ексель, при этом данные могут прибавляться

Программно заполнить бланк Word-шаблона данными из TextBox
Привет всем!!!! Подскажите пожалуйста, как осуществить задуманное: На форме имеется ListBox с текстом, в котором есть так называемые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru