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

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

Справочник


RGB ©   (2006-08-06 00:45:00) 

Подскажите пожалуйста как сделать выбор из справочника.
Есть две таблички: 1-я – справочник единиц измерения
У нее два поля:
 1) Name – String – 20   (Например - Килограмм)
 2) ShortName – String – 10    (Например - кг.)
2-я – «операционная» (собственно тоже справочник), имеет поля:
 1) ID – AutoIncrement
 2) Naimenovanie – String – 50
 3) EdIzm – String – 10
 4) Cena – Currency
Есть ДБГрид, настроен на вторую таблицу, доступно прямое редактирование.
Как сделать чтобы на поле EdIzm был выпадающий список со всеми значениями из первой таблички поля ShortName? Ну т.е. прямое изменение недопустимо, а только выбор из списка.


RGB   (2006-08-06 03:08:00) [1]

> [15] Johnmen ©   (06.08.06 02:24)

В пример для меня
ведущий НД - это ? вторая таб.?
лукапный НД - это ? первая таб.?
Ну чего то, ну никак, не пойму что к чему.
т.е.
Первая:
1) ID - AutoIncrement
2) Name – String – 20   (Например - Килограмм)
3) ShortName – String – 10    (Например - кг.)
вторая:
1) ID – AutoIncrement
2) Naimenovanie – String – 50
3) IDEdIzm - Int
4) EdIzm – String – 10
5) Cena – Currency
и у второй KeyFields = IDEdIzm, LookupDataSet = DataSet первой, LookupKeyFields = ID, LookupResultFields = ShortName.
ну и наверное IDEdIzm сделать Visible:=False; (чёб в Гриде не видно было)
Так должно быть?

Спасибо.


Johnmen   (2006-08-06 02:24:00) [2]

Простейший пример:
в ведущем НД есть поле типа int, идентифицирующее город.
в лукапном НД есть поля int - идентификатор города, Name - имя города.
Когда всё это связано на уровне лукап поля, то результат именно такой, как ожидается.......


RGB   (2006-08-06 02:20:00) [3]

> [13] RGB   (06.08.06 02:19)

Забываю что все начинается с нуля конечно же из [0] :)


RGB   (2006-08-06 02:19:00) [4]

> т.е. какая должна быть структура таблиц

Читать как изменить структуру из [1]


RGB   (2006-08-06 02:17:00) [5]

> [11] Johnmen ©   (06.08.06 02:13)

Спасибо.

> Стандарт - в ведущем НД есть лукапное поле, ключевое значение
> которого соответствует реальному значению в ссылочном НД.
> А отображается то, что в в ссылочном НД....

У всех своя терминология.... не совсем понял...
Евгений М. Приведите пожалуйста какой нибудь пример по поводу моего вопроса
(лукап полей) т.е. какая должна быть структура таблиц и как правильно настроить поле EdIzm второй таб.


Johnmen   (2006-08-06 02:13:00) [6]

Прошу прощения. В таких расплывчатых терминах я не могу плавать...:)
Стандарт - в ведущем НД есть лукапное поле, ключевое значение которого соответствует реальному значению в ссылочном НД. А отображается то, что в в ссылочном НД....


> RGB   (06.08.06 02:04) [10]


Наверное, правильно....:)


RGB   (2006-08-06 02:04:00) [7]

> [7] Johnmen ©   (06.08.06 01:58)

Вообще у меня все просто... Нужно из первой таблицы из поля ShortName брать значения и вставлять в список выподающий на поле EdIzm второй таб.
Правильно ли здесь сделал?

> [5] RGB   (06.08.06 01:51)


RGB   (2006-08-06 02:01:00) [8]

> [7] Johnmen ©   (06.08.06 01:58)

Я правильно понял, что для этой ссылочной взаимосвязи и надо два поля задействовать?


RGB   (2006-08-06 01:59:00) [9]

Может как то есть способ выбора из справочника проще? для поля...
Желательно нужно изминения в справочнике меняли и в во второй таблице.
т.е. поменяли кг на кг. (точку добавили) и во второй везде где было кг стало кг.


Johnmen   (2006-08-06 01:58:00) [10]

Я не знаю, что там у тебя и как, но ссылочые взаимосвязи реализуются классически. Это описано в горах литературы...


RGB   (2006-08-06 01:55:00) [11]

А если каждое поле из второй таблицы должно выбираться из своего справочника, это что же для каждого поля нужно его продублировать?
т.е. полей станет в два раза больше чем реально используются?


RGB   (2006-08-06 01:51:00) [12]

Получается нечто то, что надо, если добавляю в первую таблицу поле ID - AutoIncrement и у второй KeyFields = ID, LookupDataSet = DataSet первой, LookupKeyFields = ID, LookupResultFields = ShortName.
Вот так вроде то че надо... но для чего добавлять поле в первую таб., и зачем во второй таб. поле ID меняется взависимости от выбора из первой (кроме того что поле EdIzm тоже выбирается из ShortName, т.е. только вот это бы и надо)?


Johnmen   (2006-08-06 01:48:00) [13]

На пальцах:
в НД, где преполагается ссылка на НД с "расшифровкой имён", добавляется лукапное поле. Настраивается оно соответственно. И всё...


RGB   (2006-08-06 01:43:00) [14]

> [2] Johnmen ©   (06.08.06 01:32)
> Изучить лукапные поля.

Вот в них и запутался... Можно как нибудь на пальцах про это рассказать?
Зачем надо использовать два поля для этого... KeyFields, LookupKeyFields, LookupResultFields? Книга есть... читаю...если бы все понял здесь бы неспрашивал.


Johnmen   (2006-08-06 01:32:00) [15]

Изучить лукапные поля. Т.е. добавить в набор данных LookupField  на набор данных справочника ед.измерения.


RGB   (2006-08-06 00:46:00) [16]

Таблицы ПАРАДОКС (*.db)


Наверх

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