![]() |
|
![]() ![]() ![]() |
|
CrazyDriver |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 11.2.2005 Репутация: нет Всего: нет |
Здравствуйте! Может кто сталкивался с такой проблемой: имются 3 таблицы связанные по порядку друг с другом MASTER-DETAIL отношениями.
Таблица1<->Таблица2<->Таблица3 где <-> - MASTER-DETAIL отношение. А также три комбобокса (DBExtLookupCombobox). которые связанны с этими таблицами (через датасеты и датасорсы соответственно) и работают по следующему принципу. Когда в первом комбобоксе выбирается запись и родительской таблицы, во втором формируются записи, соответствующие записи в родительской таблице 1, а во третьем комбобоксе формируются записи, соответствующие записи в родительской таблице 2 (она явлется родительской для таблицы3 и дочерней для таблицы 1). Все работает прекрасно, до тех пор пока в каждой дочерней таблице имеются записи, соответствующие родительским. НО!!! Если в таблице 1 имеется запись, а в дочерней таблице 2 отсутствуют дочерние записи, на эту родительскую запись в таблице 1, как при выборе этой записи в комбобоксе 1 все валится с ошибками типа: "RecordIndex out of range", "List Index out of bounds". Что делать с этим девэкспрессовским глюком не понимаю. я что только не пробовал!!! Я, как в принципе думаю и ВЫ не считаю отсутствие дочерних записей поводом к такого рода диким ошибкам... Что делать??? Помогите пожалуйста... А то я уже в тупик зашел с этой прблемой.... Заранее благодарен... |
|||
|
||||
~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 4 Всего: 68 |
|
|||
|
||||
Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 6 Всего: 55 |
Похоже, в DBExtLookupCombobox используются закладки для запоминания позиции в наборе данных. Однако, если между запоминанием Bookmark и ее восстановлением, изменяется кол-во записей в наборе, то при восстановлении случаются подобные казусы.
![]() Единственный, на мой взляд, выход, это найти в исходниках DBExtLookupCombobox место где восстанавливается закладка, и обрамить ее восстановление try except. Найти можно включив остановку по Exception. Можно правда сделать и без коррекции исходников. Для этого надо определить свой компонент доступа к данным унаследовав его от того который используешь сейчас. В новом компоненте переопределить виртуальный метод SetBookmarkStr, в котором вызвать inherited, обрамив его try exept. Далее, используй в программе только новый компонент. -------------------- Все знать невозможно, но хочется |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |