Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
4-1089976584
Вадим
2004-07-16 15:16
2004.09.05
Потоки


14-1092596655
Vasya.ru
2004-08-15 23:04
2004.09.05
Прочитал тут, что Integer быстрее Byte и др. производных


1-1092848545
Holls
2004-08-18 21:02
2004.09.05
Thread creation error


1-1092833472
Leaner
2004-08-18 16:51
2004.09.05
Является файл ShortCut-ом или нет ?


3-1092210206
Lika
2004-08-11 11:43
2004.09.05
Как составить оптимальный запрос?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский