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