powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Значения ключевых полей в связанных таблицах
3 сообщений из 3, страница 1 из 1
Значения ключевых полей в связанных таблицах
    #37932290
miv32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Форма для ввода/редактирования данных построена на связке 2-х параметрических буферизованных LocalVew, связанных отношением один-ко-многим.
Родительская таблица: "customer" с полями customer_id,customer_name
Дочерняя: "contract" с полями contract_id,customer_id,contract_name
При вводе новой записи значение ключевого поля customer_id в родительской таблице заранее неизвестно, и при добавлении строк в дочернюю
1) для customer_id в "contract" нечего ставить.
2) для contract_id значение тоже пока неизвестно, т.к. возможно на момент сброса буфера это значение изменится (работа на сети)
Приращение +1 по ключевым полям идет через функцию, аналогичную NewId (последние значения храняться в служебной таблице)
Поэтому, если ставить NewId в default value, выпадает последовательность значений, если юзер передумал сохраняться.
В данный момент для "customer" использую временные ключи, а при сбросе буфера генерю уже по NewId,
Для "contract" contract_id приходится при добавлении делать MAX(contract_id) и опять при сбросе получать реальный по NewId для вставки в таблицы. Какие-то танцы с бубном. Есть решение поизящней?
...
Рейтинг: 0 / 0
Значения ключевых полей в связанных таблицах
    #37932381
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В дочерней использовать табличную буферизацию или курсор отдельный. Сначала сохранять запись в родительскую, брать ее ИД, проставлять в дочерней, сохранять дочернюю.
...
Рейтинг: 0 / 0
Значения ключевых полей в связанных таблицах
    #37932529
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно еще попробовать сделать так: заранее добавлять в родительскую энное количество записей, и по некоторому полю-признаку считать их "буферными". Т.е. ID в родителе будет уже проставлен, а при необходимости "добавления" - вы не добавляете запись физически, а просто сбрасываете признак у нужной записи. При этом дочерняя может в любой момент запросить "свободный ID" из родительской, просто по полю-признаку. А "буферные" записи добавляются по мере необходимости - например, при обслуживании БД, или при запуске приложения...
Неудобство одно - приходится иметь две процедуры для добавления записей в дочернюю - такую, как у вас, и такую, как описано - и выбирать, которая будет отрабатывать.
Кстати, заранее добавлять "буферные" записи можно и в дочерние таблицы...
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Значения ключевых полей в связанных таблицах
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]