Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Вывод даных в DBLookUpComboBox


Автор: AleksandrH 20.5.2010, 12:01
На форме есть 2 DBlookupcombobox (дбкб1, дбкб2) данные в которые берутся с таблиц. 
В зависимости от выбраной записи в первом дбкб1 выводятся значения в дбкб2.


проблема состоит в том что если записи с дбкб1 нет соответсвенной в дбкб2, то выдается ошибка
"BOF или EОF имеет значение True либо текущеее значение удалено".
Как обратоботать ету ошибку чтобы выводило сообщение?







Автор: former 20.5.2010, 13:03
Цитата(AleksandrH @  20.5.2010,  12:01 Найти цитируемый пост)
проблема состоит в том что если записи с дбкб1 нет соответсвенной в дбкб2, то выдается ошибка
"BOF или EОF имеет значение True либо текущеее значение удалено".
Как обратоботать ету ошибку чтобы выводило сообщение?

Правильно, нарушаются целостность и непротиворечивость данных.
Тут не ошибку нужно обрабатывать, а правильно настраивать внешние ключи. Потомок должен удаляться при удалении родителя, или ему должен быть сопоставлен новый родитель до удаления.
СУБД какая?

Автор: AleksandrH 20.5.2010, 13:13
Цитата(former @  20.5.2010,  13:03 Найти цитируемый пост)
СУБД какая?

ACCESS.



Цитата(former @  20.5.2010,  13:03 Найти цитируемый пост)
правильно настраивать внешние ключи.


таблица1: ид, имя
таблица2: ид2, ид, имя_второе

в таблица2 masterfield - ид.


Автор: former 20.5.2010, 13:37
Я имею виду это:
user posted image

Автор: AleksandrH 20.5.2010, 14:33
Извини, я не понимаю что ты хочешь сказать. :-(

Что с этими установками, что без них - не работает

Автор: former 20.5.2010, 16:31
Цитата(AleksandrH @  20.5.2010,  14:33 Найти цитируемый пост)
Извини, я не понимаю что ты хочешь сказать. :-(

Я хочу сказать, что нужно хотя бы с основами построения БД ознакомиться.
Ты пишешь:
Цитата(AleksandrH @  20.5.2010,  12:01 Найти цитируемый пост)
На форме есть 2 DBlookupcombobox (дбкб1, дбкб2) данные в которые берутся с таблиц. 
В зависимости от выбраной записи в первом дбкб1 выводятся значения в дбкб2.

Значит эти  таблицы должны быть связаны внешним ключом (FOREIGN KEY). Создание связи я привел на изображении. Это необходимо для обеспечения ссылочной целостности, т.е. при удалении записи из родительской таблицы tbl_a должны удаляться, связанные с ней внешним ключом, записи из таблицы tbl_b, что бы они не стали "осиротевшими". Поэтому у тебя и появляется ошибка - родительскую запись удалил, а связанные с ней записи из других таблиц "осиротели" (им не на что ссылаться). Так понятно?

P.S. Когда же вы начнете книги читать?

Автор: AleksandrH 20.5.2010, 17:16
При чем здесь книжки, удаление родительской записи? smile 
FOREIGN KEY это поле "ид" которое одинаковое в двух таблицах.


Вопрос стоит о выборке данных а не об удалении связаных записей.

Таблица1
Ид: 1; 2; 3

Таблица2
Ид2: 1_1; 2_2; 3_3
Ид:   1; 1; 2 
Имя: Имя1; Имя2; Имя3


Выбираю в 1dblookupcomboboxe значение "1" в 2dblookupcombobox выводится "Имя1; Имя2"
Выбираю в 1dblookupcomboboxe значение "2" в 2dblookupcombobox выводится "Имя3"
Выбираю в 1dblookupcomboboxe значение "3" в 2dblookupcombobox ничего не выводится, програма выдает ошибку, потому что нет записей связанных с "3". (например, если в таблице1 классы а в таблице2 ученики. При выборе 1 класса - выведется список учеников, а при выборе 3 класса - ошибка, потому что класс есть, но без учеников(ну не успели додать, перевели, разформировали класс))


Автор: former 20.5.2010, 18:03
Ну тогда выкладывай пример. Телепаты в отпуске.

Автор: AleksandrH 21.5.2010, 09:16
former спс за "пинок" в нужном напрямлении  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)