Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];

Вниз

перекрестная зависимость lookup   Найти похожие ветки 

 
demoniada   (2002-11-05 13:13) [0]

Народ! Выручайте ламера!
Короче, херня такая. У меня есть такая схема данных:

BRANCH <--------- DEPARTMENT
^ ^
| | - эти 2 связи необязательные
| |
PERSON ---------------+

Мне надо редактировать персон так, чтобы мона было выбрать branch и/или department. Как вы сами понимаете, просто так можно получить противоречие (персона принадлежит ветке, которой не принадлежит отдел, в который она входит). Гемор в следующем: как это сделать? То есть как в гриде накладывать условия "фильтра" только для одной строки (редактируемой). Я пробовал поставить зависимость между OraQuery, но она во-первых, односторонняя (нужно 2-х), а во-вторых влияет на весь грид. Карточку сделать не могу: правила такие.
Выручайте, мож кто сталкивался?


 
Johnmen   (2002-11-05 13:36) [1]

>...а во-вторых влияет на весь грид.

А в чем влияние ? Я так предвижу, что в неотрисовке некоторых значений...
Глянь сюды
http://delphi.mastak.com/cgi-bin/forum.pl?look=1&id=1036132844&n=1


 
demoniada   (2002-11-05 15:03) [2]

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


 
Johnmen   (2002-11-05 16:05) [3]

Побороть можно всё и всех :))) Главное - цена вопроса...
>...мы выбрали тип товара, а название его не изменилось
Опять же могу предположить, что лукапные поля прописаны некорректно...


 
demoniada   (2002-11-06 11:53) [4]

ну, я дельфи знаю крайне плохо, поэтому если не затруднит - по шагам :))
Вот что делаю я:
1) создаем DataModule

2) кладем на него 3 OraQuery: oqLiablePerson, oqBranchLookup, oqDepartmentLookup. Прописываем их запросы (без параметров).

3) добавляем 2 столбца в oqLiablePerson, метим их как Lookup и указываем по каким ключевым полям какие поля из какой query брать :)

4) устанавливаем LookupCache на свежедобавленные поля в true.

5) делаем в формочке грид, делаем датасорс, смотрящий на oqLiablePerson и привязываем к нему грид. Ну, добавляем столбцы и т.п.

Дальше-то что с этим добром делать? В этой конфигурации нет зависимостей (то есть лукапы сами по себе). Каким образом их связать, чтобы:
1) при выборе Branch Department либо сбрасывался либо оставался старым (в зависимости от того, принадлежит ли он выбранному бранчу), причем только для текущей персоны.

2) при попытке после этого выбрать Department на другой персоне вываливался список отделов ДЛЯ ЭТОЙ ПЕРСОНЫ (в соответствии с ее бранчем), а не последний актуальный по выбору бранча.

Вот с этими траблами я столкнулся, следуя тому, что написано по ссылке http://delphi.mastak.com/cgi-bin/forum.pl?look=1&id=1036132844&n=1 Мож я чего не так понял?



 
ЮЮ   (2002-11-06 13:23) [5]

>ну, я дельфи знаю крайне плохо
А базы данных проектируете ещё хуже. Не должно быть у ПЕРСОНЫ никакого бранча, у него должно быть только Department , из которого всегда можно получить бранч.


 
demoniada   (2002-11-06 14:52) [6]

Во-первых, базу пректировал не я. Во-вторых, придставь себе, что нет отдела (бранч на них не делится). И что? Заводить ПсевдоотделВоВесьБранч, что-ли? Я же привел не всю модель данных, а только часть. Реально, первый уровень классификации - компания, которая делится на бранчи, которые в свою очередь _могут_ делиться на отделы. Так что БД в данной ситуации воспринимается как нечто готовое и осмысленное в соответствии со спецификой области. Тут уж ничего не попишешь...



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
1-82743
brozer
2002-11-12 16:25
2002.11.25
Динамическое подключение пакетов. помогите разобратся.


1-82727
roman002
2002-11-15 05:29
2002.11.25
ASCII в Memo


8-82879
HPN
2002-08-03 22:05
2002.11.25
Звук с микрофона


1-82688
bmai
2002-11-14 05:36
2002.11.25
Как извлечь иконку из MessageDlg?


1-82851
Zn
2002-11-14 10:31
2002.11.25
Выделение и освобождение памяти под PChar





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский