![]() |
#1 |
Участник
|
Есть таблица с числовым полем value. Через датапорт импортирую данные. Нужно чтобы если запись с таким ключом уже существовала, то в поле value записывалась сумма того значения, что там уже лежит и того, которое импортируется из файла. Я пытаюсь это сделать в триггере OnBeforeImportRecord, но не совсем понятно как получить значение поля из файла.
|
|
![]() |
#2 |
Участник
|
Цитата:
Сообщение от a.abyzov
![]() Есть таблица с числовым полем value. Через датапорт импортирую данные. Нужно чтобы если запись с таким ключом уже существовала, то в поле value записывалась сумма того значения, что там уже лежит и того, которое импортируется из файла. Я пытаюсь это сделать в триггере OnBeforeImportRecord, но не совсем понятно как получить значение поля из файла.
1. В Dataport Fields в свойствах SourceExp пробивал не названия полей импортируемой таблицы а названия созданных переменных (далее их можно считывать) 2. в OnBeforeImportRecord обязательно обнуляеш переменные их дефолтовым значением 3. ну и в OnAfterImportRecord пишется кухня со вставкой и обновлением импортируемых данных, там уже будут видны реальные считанные данные. Наверняка есть еще какой способ. |
|
![]() |
#3 |
Участник
|
Цитата:
Сообщение от a.abyzov
![]() Есть таблица с числовым полем value. Через датапорт импортирую данные. Нужно чтобы если запись с таким ключом уже существовала, то в поле value записывалась сумма того значения, что там уже лежит и того, которое импортируется из файла. Я пытаюсь это сделать в триггере OnBeforeImportRecord, но не совсем понятно как получить значение поля из файла.
1. В DataportField как обычно поля записи 2. В свойствах данного датаайтема св-во AutoSave = no 3. В OnAfterImportRecord сам пишеш кухню со вставкой и обновлением записи, к считываемой переменной можно обращаться как к переменной датаайтема. Либо еще проще: Выполнить обработку считанного поля данных но еще не вставленных в таблицу в триггере OnBeforeEvaluateField необходимого реквизита |
|
![]() |
#4 |
Участник
|
Но как считать из таблицы предыдущее значение поля до вставки. Если я объявляю переменную record MyTable, то работаю с ней как с dataitem (значения такие же). Как получить предыдущее значение из таблицы?
|
|
![]() |
#5 |
Участник
|
Цитата:
Попробуй сделать так: 1. В свойствах данного датаайтема св-во AutoSave = no – то есть фактически получаеться аналог отчета, вставку надо писать самому. 2. В триггере OnAfterImportRecord пишеш по типу: //MyTable – это датаайтем If rMyTable.GET(MyTable.Key) then begin rMyTable.Value:= rMyTable.Value+ MyTable.Value; //то есть аккамулируется сумма rMyTable.MODIFY(TRUE); end else begin rMyTable.COPY(MyTable); rMyTable.INSERT; End; |
|
![]() |
#6 |
Участник
|
Сэнкс! Через дополнительную таблицу все заработало.
|
|
![]() |
#7 |
Участник
|
Подскажите плиз! Нужно импортировать dbf файл в Navision через датапорт.
Количество полей не совпадает. |
|
![]() |
#8 |
Участник
|
|
|
![]() |
#9 |
Участник
|
не все поля из dbf нужно импортировать, выборочно
может есть у кого кусок примера как это можно запрограмить |
|
![]() |
#10 |
Участник
|
|
|
![]() |
#11 |
Участник
|
Версия 5.0
А такой формы нема ![]() |
|
![]() |
#12 |
Участник
|
Перепутал, 14784 форма
|
|
![]() |
#13 |
Участник
|
Gmc пасибище!
|
|