Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.02 c
14-59357
DJ LLL
2002-10-29 19:45
2002.11.18
BDE


6-59312
Bazzik
2002-08-24 15:02
2002.11.18
Как узнать объем internet-трафика


1-59195
Mixvictor
2002-11-09 16:06
2002.11.18
Построение элипса по заданому уравнению.


4-59493
Alexander
2002-10-07 06:08
2002.11.18
Если у принтера настроена печать в файл, то можно ли как-то


3-59068
Crok
2002-10-30 15:55
2002.11.18
Счетчик записей в таблице