Текущий архив: 2002.11.18;
Скачать: CL | DM;
Вниз
Совет нужен Найти похожие ветки
← →
Max Zyuzin (2002-10-30 14:46) [0]Приветствую еще раз всех.
Вот задумался я тут над одной штуковиной.
Есть у меня две таблички связаные один к многим. Допустим теперь, что добавляю я запись к мастер-таблице, появляется у меня окошечко...
В нем я бы хотел сделать возможность сразу добавить записи и для связаной таблици. Но дело в том, что пока я не нажму на фомочке кнопочку принять, у меня запись из мастер-таблицы в базу не добавится, и не понятно мне как добавлять записи сразу во вторую таблицу (внешний ключ к чему прикручивать не ясно).
Решение, которое я вижу - создать в мастер-таблице "техническую" запись (которую вообще не отображать при просмотрах), от которой только потребуется его ID, что бы можно было добавлять в связанную таблицу с этим ID. Ну а после нажатия кнопки уже обнавлять записи из связанной таблици с этим "техническим" ID на новый полученый после добавления из мастер-таблицы.
Но этот способ мне не очень нравится главным образом из за этой "левой" записи.
Я почти уверен, почти все сталкивались с подобной проблеммой. Как кто решал, поделитесь?
← →
stone (2002-10-30 14:58) [1]Объяви начало транзакции
Запиши в базу запись в мастер-таблицу
Потом спокойно пиши хоть во все связанные сразу
После всего завершай транзакцию
← →
Johnmen (2002-10-30 14:59) [2]Небольшое уточнение -
1. на мастере есть PK и на детейле соответствующий FK ?
2. каковы компоненты доступа ?
← →
Max Zyuzin (2002-10-30 15:03) [3]>stone © (30.10.02 14:58)
Угу... только после этого придется еще раз апдейтить мастер таблицу... в смысле если по ходу он еще и поля какие заполнит... В общем спасибо, мысль хорошая.
>Johnmen © (30.10.02 14:59)
1. Исественно :) есть
2. IBDataBase, IBTransaction, IBQuery
← →
Johnmen (2002-10-30 15:27) [4]Общие соображения :
1. Конечно же в рамках одной тр-ии (stone © (30.10.02 14:58))
2. Для редактируемых запросов использовать IBDataSet вместо IBQuery.
Теперь по сути :
вар.1. Тобой указанный.
вар.2. Заполняя детейл НД, не выполняем никаких запросов на изменение данных, и только при нажатии кнопы вставляем мастера и затем детали.
(Оба использую, других, в рамках поставленного вопроса не знаю, да и нет их)
← →
Max Zyuzin (2002-10-30 15:33) [5]>Johnmen © (30.10.02 15:27)
1. Ну это само сабой разумеющееся.
2. Ну никак не заполнить ведь :( ведь нужно заполнить поле FK хоть чем то, если запонить чем нить не существующим (нулем например), начинает сиьлно ругаться на ссылочную целостность мол нету такой записи у тебя в мастере.
Сейчас реализовываю способ, предложенный stone © (30.10.02 14:58) о результатах сообщю дополнительно :)
← →
Johnmen (2002-10-30 15:50) [6]>Max Zyuzin © (30.10.02 15:33)
Это не способ решения проблемы (stone © (30.10.02 14:58)), это правильное дополнение (чтобы др.клиенты не видели твоей "технической" записи).
:)
← →
Max Zyuzin (2002-10-30 15:53) [7]>Johnmen © (30.10.02 15:50)
Да то что надо все делать в одной транзакции я сразу понял, я думал как без создания этой самой записи обойтись :)
← →
Johnmen (2002-10-30 16:31) [8]Без создания - вар.2. от (30.10.02 15:27)
Хотя он более громоздкий...
← →
Max Zyuzin (2002-10-30 16:44) [9]>stone © (30.10.02 14:58)
Сделал по вашему совету, у меня получилось... довольно изящно. спасибо :)
Страницы: 1 вся ветка
Текущий архив: 2002.11.18;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.009 c