![]() |
|
![]() ![]() ![]() |
|
Tcin |
|
|||
Новичок Профиль Группа: Awaiting Authorisation Сообщений: 7 Регистрация: 4.2.2008 Где: Екатеринбург Репутация: нет Всего: 1 |
Hi, All!
Не могу заставить корректно работать простую, казалось бы, штуку... Вводная: есть два набора обрудования (различных типов), нужно просматривать в двух таблицах - по одной для каждого типа. Кроме того, оборудование разбито по категориям, нужно делать отбор в обеих таблицах по категориям. То есть, делаем таблицу с категориями (назовём её Master) и привязываем к ней две таблицы-детализации, по одной для каждого типа оборудования - Detail1 и Detail2. Всю эту красоту реализуем на 3-х ClientDataSet'ах (данные живут in memory). Дальше немного сложнее. Существует ещё и связь между Detail1 и Detail2: каждая запись в Detail2 может ссылаться ровно на одну запись в Detail1 (подразумевается foreign key) по двум полям: ИД категории и ИД устройства - и эту ссылку пользователь в таблице Detail2 видит. А в табличке Detail1 пользователь должен видеть, какая именно строка (устройство) из Detail2 привязана (или не привязана ![]() ![]() Но возникает проблемка. При выборе новой категории в таблице Master обновляются наборы данных обеих детализаций, причём, lookup-поле оказывается пустым. Такое подозрение, что первым обновляется набор Detail1, когда Detail2 ещё пустой или содержит данные из другой категории - естественно, lookup в этом наборе ничего не находит. Если после заполнения обеих детализаций каким-либо образом (избыточно!) обновить данные в Detail1 - lookup заполняется корректно. Вопрос такой: можно ли повлиять на то, в каком порядке заполняются данными различные детализации одного мастера? Или есть другое решение, желательно, без костылей? |
|||
|
||||
Bose |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 9 Всего: 51 |
Можно. Я в таких случая, убирал связь master-detail в Designer-e и обновлял содержимое detail вручную. Точнее, у master писал примерно такой обработчик в событии OnAfterScroll. Примерно такой:
|
||||
|
|||||
Tcin |
|
|||
Новичок Профиль Группа: Awaiting Authorisation Сообщений: 7 Регистрация: 4.2.2008 Где: Екатеринбург Репутация: нет Всего: 1 |
Bose, спасибо, вариант ясен.
Но в чистом виде не проканает ![]() А так-то я и ищу пока вариант обхода с временным отключением связи master-detail... Но побочные эффекты полезли... Борюсь... Костыли подставляю... Это сообщение отредактировал(а) Tcin - 30.1.2009, 12:50 |
|||
|
||||
Tcin |
|
|||
Новичок Профиль Группа: Awaiting Authorisation Сообщений: 7 Регистрация: 4.2.2008 Где: Екатеринбург Репутация: нет Всего: 1 |
Ставлю в тему крыжик, чтоб народ больше не смущать
![]() На порядок обновления связей мастера с детализациями влиять так и не научился. Видимо, невозможно. Для конкретного случая принято решение от Bose (в адаптированном виде). Перелезть нельзя - обойдём. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |