09.04.2007, 19:48 | #1 |
Участник
|
Есть таблица с числовым полем value. Через датапорт импортирую данные. Нужно чтобы если запись с таким ключом уже существовала, то в поле value записывалась сумма того значения, что там уже лежит и того, которое импортируется из файла. Я пытаюсь это сделать в триггере OnBeforeImportRecord, но не совсем понятно как получить значение поля из файла.
|
|
09.04.2007, 20:12 | #2 |
Участник
|
Цитата:
Сообщение от a.abyzov
Есть таблица с числовым полем value. Через датапорт импортирую данные. Нужно чтобы если запись с таким ключом уже существовала, то в поле value записывалась сумма того значения, что там уже лежит и того, которое импортируется из файла. Я пытаюсь это сделать в триггере OnBeforeImportRecord, но не совсем понятно как получить значение поля из файла.
1. В Dataport Fields в свойствах SourceExp пробивал не названия полей импортируемой таблицы а названия созданных переменных (далее их можно считывать) 2. в OnBeforeImportRecord обязательно обнуляеш переменные их дефолтовым значением 3. ну и в OnAfterImportRecord пишется кухня со вставкой и обновлением импортируемых данных, там уже будут видны реальные считанные данные. Наверняка есть еще какой способ. |
|
09.04.2007, 20:52 | #3 |
Участник
|
Цитата:
Сообщение от a.abyzov
Есть таблица с числовым полем value. Через датапорт импортирую данные. Нужно чтобы если запись с таким ключом уже существовала, то в поле value записывалась сумма того значения, что там уже лежит и того, которое импортируется из файла. Я пытаюсь это сделать в триггере OnBeforeImportRecord, но не совсем понятно как получить значение поля из файла.
1. В DataportField как обычно поля записи 2. В свойствах данного датаайтема св-во AutoSave = no 3. В OnAfterImportRecord сам пишеш кухню со вставкой и обновлением записи, к считываемой переменной можно обращаться как к переменной датаайтема. Либо еще проще: Выполнить обработку считанного поля данных но еще не вставленных в таблицу в триггере OnBeforeEvaluateField необходимого реквизита |
|
10.04.2007, 11:42 | #4 |
Участник
|
Но как считать из таблицы предыдущее значение поля до вставки. Если я объявляю переменную record MyTable, то работаю с ней как с dataitem (значения такие же). Как получить предыдущее значение из таблицы?
|
|
10.04.2007, 21:43 | #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; |
|
11.04.2007, 11:28 | #6 |
Участник
|
Сэнкс! Через дополнительную таблицу все заработало.
|
|
22.07.2009, 16:28 | #7 |
Участник
|
Подскажите плиз! Нужно импортировать dbf файл в Navision через датапорт.
Количество полей не совпадает. |
|
23.07.2009, 10:43 | #8 |
Участник
|
|
|
23.07.2009, 10:48 | #9 |
Участник
|
не все поля из dbf нужно импортировать, выборочно
может есть у кого кусок примера как это можно запрограмить |
|
23.07.2009, 11:06 | #10 |
Участник
|
|
|
23.07.2009, 11:54 | #11 |
Участник
|
Версия 5.0
А такой формы нема |
|
23.07.2009, 12:15 | #12 |
Участник
|
Перепутал, 14784 форма
|
|
23.07.2009, 15:53 | #13 |
Участник
|
Gmc пасибище!
|
|