Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подстановка в конструкторе Access [D6, MS Access]


Страницы:   1 2

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 ?

Проблема в том, что таблиц и полей в них очень много. Нужно информацию как-то получить из БД. В ней уже всё настроено.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо