Форум: "Базы";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
ВнизПодстановка в конструкторе Access Найти похожие ветки
← →
eLVik © (2004-08-09 13:52) [0]Здравствуйте.
В конструкторе таблиц Access есть возможность указать подстановку (список или поле со списком) для поля, чтоб при просмотре таблицы в этом поле отображалось значение из присоединённой таблицы.
Подскажите, как сделать, чтоб при построении запроса к БД в DBGrid отображались расшифрованные "подставленные" значения.
Спасибо
← →
Соловьев © (2004-08-09 13:54) [1]LookUpFileds
← →
eLVik © (2004-08-09 14:12) [2]TField.LookUpDataSet ?
Проблема в том, что таблиц и полей в них очень много. Нужно информацию как-то получить из БД. В ней уже всё настроено.
← →
Наталия © (2004-08-09 16:41) [3]Если я не ошибаюсь, то список подстановки в Access настраивается не "В конструкторе таблиц Access", а при конструировании форм в Access. Думаю, то же самое конструирование придется повторить в Delphi. :))
← →
eLVik © (2004-08-09 17:21) [4]Нет. Открываем конструктор таблиц, переключаемся на вкладку "Подстановка", выбираем тип элемента управления "Список" и настраиваем его свойства.
Другое дело, что просмотр таблицы может осуществляться через форму, которая имеет табличный вид.
Ладно. Попробую сформулировать по другому. Вот такой мне видится алгоритм:
При заполнении записи в каком-то поле DBGrida, программа смотрит, является ли это поле связанным с мастер-таблицей.
Если да, то значение через запрос заменяется на значение из мастер таблицы. При этом тип поля в DBGrid меняется на String.
Я может перемудрил, но цель задачи, думаю, ясна.
← →
Соловьев © (2004-08-09 17:25) [5]
> Я может перемудрил, но цель задачи, думаю, ясна.
[1]
← →
AleKo (2004-08-10 09:16) [6]Запрос на объединение таблиц.
Первый запрос выборка необходимых данных
Второй объединение первого с таблицей справочником по ключевому полю. В результирующем запросе выводишь не поле с кодом, а поле с наименованием из справочника.
← →
eLVik © (2004-08-10 13:08) [7]Как определить, присоединена ли таблица-справочник к указанному полю? Нужно, чтоб автоматом настроить LookUp Definition
Вручную определять DataSet"ы не очень хочется (12 таблиц, в каждом 3 десятка полей + 10 справочников)
Для поля подстановки нужно использовать 2-ое строковое поле в таблице-справочнике
Я понимаю, что, наверно, достал уже всех ;)
← →
Соловьев © (2004-08-10 13:23) [8]
> Вручную определять DataSet"ы не очень хочется (12 таблиц,
> в каждом 3 десятка полей + 10 справочников)
ты же программист или кто? делаешь на стадии проетктирования руцями, а потом уже легче будет
> Нужно, чтоб автоматом настроить LookUp Definition
наверное как-то можно считать эту информацию из системных таблиц, только как?
← →
Наталия © (2004-08-10 13:35) [9]Было мне однажды так же лениво делать кучу справочников в одном проекте, я сделала отдельную таблицу, где перечислены все справочники, из какого поля какие lookup-ы вызываются и т.п. Один раз пишешь универсальную программку по отображению такого справочника и пользуешься...
← →
eLVik © (2004-08-10 14:43) [10]
> > Вручную определять DataSet"ы не очень хочется (12 таблиц,
> > в каждом 3 десятка полей + 10 справочников)
>
> ты же программист или кто? делаешь на стадии проетктирования
> руцями, а потом уже легче будет
Прикинь сотню DataSetoв ВРУЧНУЮ ОПРЕДЕЛИТЬ. А если, справочник новый добавят при обновлении базы (пусть это даже большая редкость), прикажете софт переписывать? По идее программа должна использовать информацию о структуре из БД, а не дублировать эту структуру. Вот в чём вся соль.
> я сделала отдельную таблицу, где перечислены все справочники,
> из какого поля какие lookup-ы вызываются и т.п.
В принципе здесь тоже не обойтись без ручой набивки. Однако тут есть за что зацепиться, т.к если будут добавлены какие-то справочники, то проще прописать это в таблицу чем перекомпилировать программу.
Всем ОГРОМНОЕ СПАСИБО за обсуждение ;)
← →
Соловьев © (2004-08-10 14:45) [11]
> По идее программа должна использовать информацию о структуре
> из БД, а не дублировать эту структуру. Вот в чём вся соль.
У Вас что каждый день новый справочник? Должна, а у Вас что сетевая версия? ИМХО, порочное увлечение Ацесс - ставить как сетевую СУБД
← →
Соловьев © (2004-08-10 14:47) [12]То что в Ацесе Вы видите выпадающий список - это уже позаботились разработчки самой оболочки. Теперь Вам надо позаботится для Делфи - наверное надо писать свой класс. который согласно системным таблицам будет как-то строить такие списки. я таких не видел.
← →
eLVik © (2004-08-10 15:13) [13]
> У Вас что каждый день новый справочник?
Нет не каждый день.
> порочное увлечение Ацесс - ставить как сетевую СУБД
Поверьте, никто и не собирался.
Был вопрос: нельзя ли узнать подключена ли к полю мастер-таблица, если да, то какая?
Ответ: отрицательный
Я ищу наиболее гибкий способ (с минимумом моих затрат). Если ничего не выйдет - что ж будем вручную всё прописывать.
Есть ещё одна идея: определённым образом именовать справочники и поля в подчинённой таблице. Тогда обработав имя поля в подчинённой можно будет выйти на имя таблицы справочника.
← →
Соловьев © (2004-08-10 15:15) [14]
> Поверьте, никто и не собирался.
тогда проблема добавления справочника руцями исчезает.
← →
eLVik © (2004-08-10 15:38) [15]
> тогда проблема добавления справочника руцями исчезает.
Дело даже не в этой конкретной БД. Хотелось, чтоб был универсальный алгоритм подстановки значений из подключённых справочников... к какой бы я базе не подключился.
← →
Соловьев © (2004-08-10 15:51) [16]
> чтоб был универсальный алгоритм подстановки значений из
> подключённых справочников... к какой бы я базе не подключился.
имхо это не верный путь - смешивать физическую реализацию и логическую в одном фйале СУБД.
← →
eLVik © (2004-08-10 16:06) [17]Не пойму. Почему в одном файле
exe - логика; mdb - физика
← →
Соловьев © (2004-08-10 16:09) [18]
> exe - логика; mdb - физика
я так понял вы хотите сделать логику отображения в mdb
Ваши слова?
> Открываем конструктор таблиц, переключаемся на вкладку "Подстановка",
> выбираем тип элемента управления "Список" и настраиваем
> его свойства
← →
eLVik © (2004-08-10 16:24) [19]Да именно.
← →
eLVik © (2004-08-10 16:33) [20]В принципе эта БД открывается только для чтения. Поэтому комбинированные списки здесь можно не ставить. Главное - само значение из присоединённой таблицы (справочника). Но в общем случае (не знаю насколько это тяжело) можно попытаться реализовать редактирование с применением выпадающего списка. Если не ошибаюсь, у TColumn есть свойство PickList. Может как-то им воспользоваться
← →
Соловьев © (2004-08-10 16:34) [21]нет. лукап поля Вам нужны
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.041 c