|
![]() |
#1 |
MCTS
|
Те рекомендации, которые дал Milk и я они подходят если в таблицу импортуются не все поля. Т.е. в справочник товаров импортируются только цены (в датапорте два поля Товар Но. и Цена). В этом случае датапорт обновит в таблице только поле Цена, а остальные не тронет.
Я так понял вы хотите хотите, чтобы если в поле есть не пустое значение, а в датапорте в этом поле пусто, то нужно оставить старое значение, и не импортировать "путое" из датапорта. Тут мне в голову пришло такое решение, возможно есть варианты по красивше: Объявляем такую же переменную Record как и импортируемая таблица (например, 27 - товары). Объявляем переменную такого же типа как поле первичного ключа этой табицы (считаем, что в первичный ключ входит одно поле). Например cNo code 20. И еще одну переменную типа Boolean (bExist) В триггере OnBeforeEvaluateField(VAR Text : Text[1024]) поля первичного ключа (в нашем случае "Но.") пишем такой код: Код: //EVALUATE(cNo,Text); //это если поле типа интежер, для code думаю хватит: cNo:=Text; //возможно придется отрезать пробелы вручную (т.к. длина явно не совпадает). не проверял. IF rItem.GET(cNo) THEN bExist:=TRUE; Код: IF bExist THEN BEGIN IF (Поле1='')AND(rItem.Поле1<>'') THEN Поле1:=rItem.Поле1; //или Валидейт, что больше нравится. .... MODIFY; END; |
|