Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.05;
Скачать: CL | DM;

Вниз

Подстановка в конструкторе 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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.062 c
8-1087834552
XGarik
2004-06-21 20:15
2004.09.05
Надпись на картинке JPG


1-1092908968
HSD
2004-08-19 13:49
2004.09.05
видимость type class снаружи .EXE


3-1092212142
Diman
2004-08-11 12:15
2004.09.05
Kaк данные DBGrid открыть в EXCEL?


1-1092936808
3APA3A
2004-08-19 21:33
2004.09.05
Правильное использование Dispose()...


14-1092839517
nasty
2004-08-18 18:31
2004.09.05
можно как-нибудь получить стринговое имя выполняющегося метода?