19.07.2011, 13:57 | #1 |
Участник
|
Добрый день всем. У меня стоит задача импортировать данные из текстового файла. Можно конечно всё сделать через код. Но думаю правильнее будет импортировать через Dataport(но проблема что с ними я ещё толком не работал). Файл содержит набор данныъ все поля кроме нескольких должны записаться в одну таблицу, но есть несколько полей используя данные которых мы должны вычислить значение и уже после записать в таблицу. Не подскажите как мне их объявить правильно? В Datapot-е без проблем прописываются все необходимые поля но как быть с вычисляемыми? Заранее спасибо!
|
|
19.07.2011, 15:06 | #2 |
Участник
|
Цитата:
Сообщение от Shaitan-Babay
Добрый день всем. У меня стоит задача импортировать данные из текстового файла. Можно конечно всё сделать через код. Но думаю правильнее будет импортировать через Dataport(но проблема что с ними я ещё толком не работал). Файл содержит набор данныъ все поля кроме нескольких должны записаться в одну таблицу, но есть несколько полей используя данные которых мы должны вычислить значение и уже после записать в таблицу. Не подскажите как мне их объявить правильно? В Datapot-е без проблем прописываются все необходимые поля но как быть с вычисляемыми? Заранее спасибо!
- вставить их в структуру полей датапорта - на триггере OnBeforeImportRecord записи или OnBeforeEvaluateField данной переменной вычислить её значение.
__________________
--------------------------------------------------------------------------------------------- "Собрать стадо из баранов легко, трудно собрать стадо из кошек" Профессор Сергей Капица |
|
19.07.2011, 16:45 | #3 |
Участник
|
Спасибо capitan
Ещё вопрос. А как добраться в триггере до значений фильтра которые были введены при запуски импорта(все поля фильтра предопределены)? Дело в том что фильтр мне не нужен, а нужны значения которые я в дальнейшем при загрузке и использую(прописываю в поля таблицы). Либо это можно сделать иначе? Можно прописать поля в закладке Параметры, но тогда там пропадает путь до файла... |
|
19.07.2011, 18:12 | #4 |
Гость
|
еще обратите внимание на свойство AutoSave и еще вроде на Autoupdate, autoreplace.
|
|
19.07.2011, 18:15 | #5 |
Участник
|
Цитата:
Сообщение от Shaitan-Babay
Спасибо capitan
Ещё вопрос. А как добраться в триггере до значений фильтра которые были введены при запуски импорта(все поля фильтра предопределены)? Дело в том что фильтр мне не нужен, а нужны значения которые я в дальнейшем при загрузке и использую(прописываю в поля таблицы). Либо это можно сделать иначе? Можно прописать поля в закладке Параметры, но тогда там пропадает путь до файла... |
|
19.07.2011, 18:56 | #6 |
Участник
|
Цитата:
Сообщение от Shaitan-Babay
Ещё вопрос. А как добраться в триггере до значений фильтра которые были введены при запуски импорта(все поля фильтра предопределены)?
Дело в том что фильтр мне не нужен, а нужны значения которые я в дальнейшем при загрузке и использую(прописываю в поля таблицы). Либо это можно сделать иначе? Цитата:
Можно прописать поля в закладке Параметры, но тогда там пропадает путь до файла...
|
|
20.07.2011, 11:56 | #7 |
Участник
|
Значит Стоит задача при импорте прописать параметры которыми заполнять некоторые поля. Решил пойти через изменение формы диалога, закладка параметры. Как вернуть пропавший элемент ввода пути до файла я понял Request Form & Dataport(Прописал Edit c ID 1). Откорректировал триггер чтоб рассчитывались и записывались прочие поля, но при запуске Датапорта выдало ошибку "Операционная система не может найти устройство и каталог для файла. Пожалуйста проверте, что названия устройства, каталога и имя файла корректны" Как мне кажется где-то нужно подставить переменную которая содержит путь до файла. Вопрос где?
|
|
20.07.2011, 12:24 | #8 |
Участник
|
|
|
20.07.2011, 14:41 | #9 |
Участник
|
понял что происходит... стоило убрать AssistEdit= YES как сразу заработало.(это конечно не Айс но после разберусь). Возникла другая проблема. Я вычисляю и прописываю поля в триггере OnAfterImportRecord. По дебагеру смотрю всё нормально присваивает. Но после импорта строки в таблице не появились :-(. В случае если я в триггере ставлю принудительно INSERT, то система ругается что такие данные уже есть.... Что не так делаю?
|
|
20.07.2011, 15:47 | #10 |
Участник
|
Цитата:
Сообщение от Shaitan-Babay
понял что происходит... стоило убрать AssistEdit= YES как сразу заработало.(это конечно не Айс но после разберусь). Возникла другая проблема. Я вычисляю и прописываю поля в триггере OnAfterImportRecord. По дебагеру смотрю всё нормально присваивает. Но после импорта строки в таблице не появились :-(. В случае если я в триггере ставлю принудительно INSERT, то система ругается что такие данные уже есть.... Что не так делаю?
- переприсвоить расчетную переменную конкретному полю таблицы Код: mydata:=test_dataport.id; test_dataport.id2:=mydata; test_dataport.INSERT(TRUE);
__________________
--------------------------------------------------------------------------------------------- "Собрать стадо из баранов легко, трудно собрать стадо из кошек" Профессор Сергей Капица |
|
20.07.2011, 17:18 | #11 |
Участник
|
Цитата:
Сообщение от Shaitan-Babay
понял что происходит... стоило убрать AssistEdit= YES как сразу заработало.(это конечно не Айс но после разберусь). Возникла другая проблема. Я вычисляю и прописываю поля в триггере OnAfterImportRecord. По дебагеру смотрю всё нормально присваивает. Но после импорта строки в таблице не появились :-(. В случае если я в триггере ставлю принудительно INSERT, то система ругается что такие данные уже есть.... Что не так делаю?
Если запись есть и значения ее полей нужно обновить, то делаем Modify, если ее нет, то Insert. |
|
20.07.2011, 17:25 | #12 |
Участник
|
Я уже завёл локальную переменную "Item Journal Line"(назвал её иначе). Все поля в Датапорте присваиваю простым переменные. В триггере ручками прописываю в свою таблицу(из переменных). Делаю инсерт, и не появляются записи :-((( . Уже начал думать может просто не те данные записываю, чего-то не хватает....вынес процедуру записи на отдельную форму с кнопкой(просто те значения прямо пишу в таблицу)... все добавилось :-( . Что ещё может быть не так?
|
|
20.07.2011, 17:40 | #13 |
Участник
|
Alterant в том и дело что нет .... ц уже оставил в файле импорта всего одну строчку.... всё проходит хорошо, не ругается, но моей строки нет в таблице.
|
|
20.07.2011, 22:20 | #14 |
Участник
|
Тогда могу только посоветовать раскрыть код этого секретного датапорта общественности. Ну или переносить вопрос на форум гадалок, предсказателей и ясновидящих.
|
|
21.07.2011, 00:17 | #15 |
Administrator
|
может датапорт просто не сохранен?..
|
|
21.07.2011, 09:50 | #16 |
Участник
|
|
|
21.07.2011, 09:53 | #17 |
Участник
|
Всем приношу извинения. Виноват. Просто никак не могу привыкнуть к особенностям навика. Sancho Вы правы. Вчера бился я с этой задачей до позднего вечера, плюнул на всё и закрыл Навик. Он меня спросил о сохранении датапорта(до этого я постоянно его сохранял Ctrl+S). Сегодня утром запустил и всё отработало. Странно конечно, я ведь и через дебагер смотрел, вроде всё было. Ещё раз приношу всем извинения. Спасибо.
|
|