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