Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2008, 20:48   #1
Paul Hindenburg
Форумчанин
 
Аватар для Paul Hindenburg
 
Регистрация: 27.07.2007
Сообщений: 123
Радость Как получить ID для новой записи с использованием триггеров?(Firebird)

есть две таблицы 1-главная, 2-подчиненая.
программа сетевая и в одо и тоже время могут добавить записи несколько пользователей, как мне проставлять id в подчиненной таблице если транзакция главной таблици не закомичена(commit)?

PS
суть программы: шапка документа и табличная часть (как накладные делают)
Ну что ж… Жизнь иногда такие фертеля выкидывает, что и фантасту не приснится…
Paul Hindenburg вне форума Ответить с цитированием
Старый 26.05.2008, 03:42   #2
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

используй генераторы
gen_id(gnr_name_generator,1)
dron-s вне форума Ответить с цитированием
Старый 26.05.2008, 06:15   #3
Paul Hindenburg
Форумчанин
 
Аватар для Paul Hindenburg
 
Регистрация: 27.07.2007
Сообщений: 123
По умолчанию

Цитата:
Сообщение от dron-s Посмотреть сообщение
используй генераторы
gen_id(gnr_name_generator,1)
это понятно - увеличение значения генератора на 1.
проблема в другом:
если запись в главной таблице еще не записана, а требуется вводить данные в подчиненную таблицу какой id вставлять в ПОДЧИНЕННУЮ таблицу?
Ну что ж… Жизнь иногда такие фертеля выкидывает, что и фантасту не приснится…
Paul Hindenburg вне форума Ответить с цитированием
Старый 26.05.2008, 08:20   #4
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

у тебя id в главной таблице (номер накладной) - к примеру таблица DOC (шапка накладных) должен быть равным id в подчинённой таблице (номенклатура в накладной) к примеру в таблице PosDoc
а противном случае, как же ты будешь выставлять счёт-фактуру на оплачиваемый товар? на основании чего? на основании счёта. соответвенно в базе об этом должна быть информация
dron-s вне форума Ответить с цитированием
Старый 26.05.2008, 08:29   #5
AlexandrSid
Форумчанин
 
Регистрация: 31.10.2007
Сообщений: 103
По умолчанию

Можно сохранять все ID подчиненной таблице в массиве и потом при заиси документа проставить туда ID основной таблицы. Но та делать не стоит как ты можешь добавить подчиненную запись не имея главной записи. А если пользователь создаст документ насохраняет подчиненных записей а потом его закроет не сохраняя главную запись что тогда? удалять все записи которые занес пользователь. Лучше все подчиненные заиси хранить в памяти до, записиглавной.
AlexandrSid вне форума Ответить с цитированием
Старый 26.05.2008, 08:33   #6
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

AlexandrSid
для этого и есть генераторы
а подчинённая и главная аблица - я описал выше...
dron-s вне форума Ответить с цитированием
Старый 26.05.2008, 08:52   #7
AlexandrSid
Форумчанин
 
Регистрация: 31.10.2007
Сообщений: 103
По умолчанию

Цитата:
AlexandrSid
для этого и есть генераторы
\

Для чего? Для этого?
AlexandrSid вне форума Ответить с цитированием
Старый 26.05.2008, 08:58   #8
Paul Hindenburg
Форумчанин
 
Аватар для Paul Hindenburg
 
Регистрация: 27.07.2007
Сообщений: 123
Радость

Цитата:
Сообщение от AlexandrSid Посмотреть сообщение
Можно сохранять все ID подчиненной таблице в массиве и потом при заиси документа проставить туда ID основной таблицы. Но та делать не стоит как ты можешь добавить подчиненную запись не имея главной записи. А если пользователь создаст документ насохраняет подчиненных записей а потом его закроет не сохраняя главную запись что тогда? удалять все записи которые занес пользователь. Лучше все подчиненные заиси хранить в памяти до, записиглавной.
да , я как раз про это и писал
вот я тут схемку нарисовал как оно получается (для наглядности)
Изображения
Тип файла: jpg пр.jpg (25.1 Кб, 149 просмотров)
Ну что ж… Жизнь иногда такие фертеля выкидывает, что и фантасту не приснится…
Paul Hindenburg вне форума Ответить с цитированием
Старый 26.05.2008, 09:05   #9
AlexandrSid
Форумчанин
 
Регистрация: 31.10.2007
Сообщений: 103
По умолчанию

Ну так в чем проблема, хранишь все записи только на форме, а при записи документа, после получения ID и записи главной таблицы сохрагяешь все подчиненные записи уже с известным ID главной таблицы.

Последний раз редактировалось AlexandrSid; 26.05.2008 в 09:23.
AlexandrSid вне форума Ответить с цитированием
Старый 26.05.2008, 09:06   #10
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

Paul Hindenburg
я что то не пойму, что значит не сформирован ID?
вы когда создаёте документ, то у этого документа есть номер, этот номер и есть id (генератор) для всего тела документа
а когда второй пользователь в этот же момент будет создавать документ, то у него генератор будет на +1 больше, соответственно и номер документа будет на +1 больше...
что здесь сложного? или я чего то не понимаю?
dron-s вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие новой формы в VB byte916 Помощь студентам 1 04.03.2008 19:10
TSQLConnection и FireBird Abercrombie БД в Delphi 5 12.02.2008 14:11
Создание новой записи Gerox БД в Delphi 3 30.12.2007 14:22
Проблема с новой формой Ellita Общие вопросы Delphi 11 06.09.2007 17:14
округление в Firebird shurik_7866 БД в Delphi 0 05.07.2007 11:10