Изменение данных

Помогите разобраться с методикой обновления данных.
Допустим у меня есть 2 таблицы:
таблица счетов продажи Sbit с уникальным полем Kod и
таблица товаров по счёту Sbit2 с полем Sbit.
Таблицы связаны отношением 1 ко многим по условию Sbit.Kod = Sbit2.Sbit
1 Допустим я ввожу новый счёт
[code]xKod = NewKod() && получение нового уникального кода[/code]
Получаю пустой курсор товаров по счёту:
[code]SELECT * FROM Sbit2 WHERE Sbit2.Sbit=xKod INTO CURSOR temp READWRITE
[/code]Добавляю и заполняю записи
Сохраняю результат:
Т.к. поле temp.Sbit пустое, то
[code]REPLACE ALL Sbit WITH xKod
SELECT Sbit2
APPEND FROM temp
ISERT INTO Sbit (Kod) VALUES (xKod)[/code]
2 Позже я могу отредактировать существующий счёт:
Ищу в таблице Sbit нужный счёт
[code]xKod = Sbit.Kod[/code]
Получаю курсор товаров по счёту:
[code]SELECT * FROM Sbit2 WHERE Sbit2.Sbit=xKod INTO CURSOR temp READWRITE
[/code]Редактирую записи.
Сохраняю результат:
Т.к. поле temp.Sbit не пустое, то
[code]UPDATE Sbit2 SET список полей FTOM temp
WHERE Sbit2.Sbit=xKod AND Sbit2.Tovar=temp.Tovar[/code]
3 Проблема возникает, когда при редактировании существующего счёта добавляются новые записи:
Ищу в таблице Sbit нужный счёт
[code]xKod = Sbit.Kod[/code]
Получаю курсор товаров по счёту:
[code]SELECT * FROM Sbit2 WHERE Sbit2.Sbit=xKod INTO CURSOR temp READWRITE[/code]
Добавляю новые и редактирую старые записи.
Как лучше организовать сохранение результата?
В этом случае в части записей поле temp.Sbit не пустое, а в части пустое.
Т.е. при APPEND часть записей удвоится.
При UPDATE вновь добавленные записи пропадут.
При INSERT пропадут изменения старых записей.
Можно в два приёма: сначала INSERT новых записей, затем UPDATE всех записей.
Пожалуйста, подскажите оптимальную стратегию.

0

Автор публикации

Пользователи не найдены
Оставить комментарий
Авторизация
*
*
Генерация пароля