| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Как передать значения колонки DBGrid ComboBox-у!? |
| Автор: Rodeon 29.1.2009, 21:29 |
| Имееться база db1.mdb, в ней несколько таблиц T1, T2, T3 и т.д. Список таблиц фиксированный, имена их тоже фиксированны! В одних таблицах содержаться данные, в других параметры и списки для этих самых данных! Сама таблица открываеться замечательно на редактирование, но встала проблемма, при добавлении новой записи к таблице данных не в ручную каждый раз вводить данные, а данные брались бы из этой же базы из таблицы параметров! Таблица параметров как например! --------------------------------------------------------------------------------------------- : Идентификатор : Поле : Цвет : Параметр : и. т.д. --------------------------------------------------------------------------------------------- : 1 : 0.01 : ГБ : СВД : и т.д --------------------------------------------------------------------------------------------- : 2 : 0.02 : БГ : СВД : и т.д --------------------------------------------------------------------------------------------- : 3 : 0.02 : ГЖ : СВД : и т.д --------------------------------------------------------------------------------------------- : 4 : 0.01 : ЛБ : УМК : и т.д --------------------------------------------------------------------------------------------- : 5 : 0.03 : МБ : ТГВ : и т.д и.т.д Дохожу до заголовка заблицы: ADOConnection.GetTableNames(ComboBox.Items); ... ADOConnection.GetFieldNames(ComboBox.Text, ComboBox1.Items); Пробую данные колонки передать в еще один Combobox: adotable.TableName:='Etalon0'; adotable.Active:=true; Пробую и так, но это лишь заголовки колонок выдает! ComboBox2.Items:=adotable.FieldDefList; А так вообще ничего не дает!? ComboBox2.Items:=dbgrid.Columns.Items[1].PickList; Подскажите плиз. как реализовать такое! |
| Автор: Akella 29.1.2009, 23:43 |
| Как я понял, то у тебя есть таблица основная и таблицы-справочники? |
| Автор: Rodeon 30.1.2009, 00:57 |
| Да, все правильно! и основная таблица, которых несколько и справочники к ним храняться в одной базе! заполняю их и сейчас, но многие данные повторяються и каждый раз их приходиться вбивать заново в новую строку в таблице, что нецелесообразно и времени тратиться больше! Хотелось бы что бы при открытии базы в нухные combobox-ы азгружались колонки данных с таблиц. Может есть какая нибудь функция натипо этих: ADOConnection.GetTableNames(ComboBox.Items); ADOConnection.GetFieldNames(ComboBox.Text, ComboBox1.Items); только что бы саму колонку данных передавала в ComboBox!? |
| Автор: Akella 30.1.2009, 17:15 | ||||||
| Есть основная таблица apart, в которой есть поля: ID, Input_Date, ID_TYPE ID_TYPE - это поле справочника Есть справочник TYPES, в котором только 2 поля ID и Name Так вот, пользователь в выпадающем списке видит значения поля Name из таблицы TYPES.
Допустим, что пользователь выбрал какую-то строку из списка: id = 10, Name = 'Первый тип'. Теперь наша задача, как программистов присвоить основной таблице полю ID_TYPE какое значение?? Правильно - 10. Выпадающий список соединяем с набором данных, в наборе данных такой запрос:
Теперь когда пользователь выберет что-то из списка, то будет видеть поле Name при соответствубщей настройке выпадающего списка - DBCombobox. При редактировании основной таблицы мы присвоим значение поля ID справочной таблицы, полю ID_TYPE основной таблицы. И в основной таблице будет запись
|
| Автор: Rodeon 30.1.2009, 19:13 |
| В принципе направление правильное, но немного не то, что я имел ввиду! Вот таблица в архиве! db.mdb Для уменьшения объема удалил несколько таблиц! Таблица в базе T_18 - это таблица данных! Поля в ней (балл, цвет и битумоид) можно заполнять вручную, а можно было бы из списка, заранее загруженного брать! Для поля (балл) все возможные комбинации храняться в другой таблице D1_35 в колонке "код" комменты к ним в колонке "Наименнование" Для поля (цвет) все возможные комбинации храняться в другой таблице D1_36 в колонке "код" комменты к ним в колонке "Наименнование" Для поля (битумоид) все возможные комбинации храняться в другой таблице D1_37 в колонке "код" комменты к ним в колонке "Наименнование" и вот когда будет создаваться новая запись в таблице T_18, указываеться вручную "кровля", "подошва" а (балл, цвет и битумоид) хотелось бы что-бы брались с выбранных в ComboBox-ах! А вот как в них загрузить данные из таблиц я не знаю!? Т.е. как из таблиц D1_35, D1_36, D1_37 с колонок "код" передать все значения в соответствующие Combobox-ы!? |
| Автор: Akella 30.1.2009, 20:28 |
| Ты уж извини, у меня нет времени да и желания (( разбираться в твоей базе. |
| Автор: Rodeon 30.1.2009, 20:34 |
| Ну может есть тогда функция какая передать данные со всей колонки из таблицы и занести их в combobox или присвоить значение колонки combobox-у? |
| Автор: Данкинг 30.1.2009, 20:49 |
Проблема тут в скорости будет, если число записей соответствующее. Но другого способа я лично не вижу... |
| Автор: Пикачу 30.1.2009, 22:03 | ||||
Rodeon У меня не много опыта в программировании, это больше хоби чем работа. Я поступил так. Может это и не оптимальный код и при большом количестве данных займет много времени, не знаю. У меня заполняло около 600 значений довольно быстро.
|
| Автор: Rodeon 30.1.2009, 22:30 | ||
| Забыл сказать, я в грид только вывожу данные а работаю как раз с набором! Akella спасибо большое за ответ, то что нужно было! ComboBox2.Items.Add(ADOTable.FieldList.Fields[1].asString); Я оказываеться путал местами: писал ADOTable.Fields[1] и пытался подобрать дальше метод... Спасибо всем: вот что вышло в итоге:
Пикачу, вам также спасибо, но пока я писал свое сообщение вы уже опубликовали свое! Akella правильно? Вы про эти несколько строк писали? |
| Автор: Akella 30.1.2009, 22:32 | ||
Не будет проблем в скорости. |