CftClub.ru
Клуб специалистов ЦФТ-Банк

копирование файла на сервер
На страницу Пред.  1, 2, 3  След.
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеВт Авг 04, 2015 07:03    Ответить с цитатой
Полезность: Нет оценки
Вот если такие головоломки с вызовами - не лучше ли запустить копирование в секции валидации, или ещё лучше - в клиент-скрипте?
Уж в клиент-скрипте-то вариантов нет - выполнение синхронное. В отличие от вывода в буфер сессии...
mmm_kazan
Участник со стажем


Вступление в Клуб: 28.03.2018
СообщениеВт Апр 03, 2018 11:24    Ответить с цитатой
Полезность: Нет оценки
Здравствуйте.
А нет случайно кода покороче и попонятнее?

Мне нужно читать файл и заполнять параллельно файл на локальной машине.

На Экранной форме определил заполнение файла приемника (DST)

В теле делаю
fileR := stdio.open(P_FILE_ALT.[DST_PATH], P_FILE_ALT.[DST_NAME], 'r');
Потом читаю его - все устраивает.

Как записать потом неясно.

Нашел конечно вариант с

::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_NAME] := 'mmm.txt';
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_PATH] := '.';
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_TYPE] := true; -- С сервера
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_DELETE] := true; -- Потом удалить
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_NAME] := 'mmm.txt';
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_PATH] := 'p:\marat\';
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_TYPE] := false; -- На клиента
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_DELETE] := false;

Но так и не смог разобраться до конца.

Видимо делаю что-то не так.
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеВт Апр 03, 2018 11:55    Ответить с цитатой
Полезность: Нет оценки
параллельно не получится.
Копирование файла на локал осуществляется один раз после того, как он создастся на сервере.
Сейчас проблема в чем? Файл не появляется в локальной папке?
mmm_kazan
Участник со стажем


Вступление в Клуб: 28.03.2018
СообщениеВт Апр 03, 2018 13:00    Ответить с цитатой
Полезность: Нет оценки
Вот что есть сейчас.

fileR := stdio.open(P_FILE_ALT.[DST_PATH], P_FILE_ALT.[DST_NAME], 'r');

while stdio.get_line(fileR, g_str, false, stdio.WINTEXT) loop
stdio.put_line_buf(trim(g_str));
end loop;

stdio.close(fileR);

Естественно выводит в окно.
Устраивает с натяжкой.
Файл откуда читаю лежит на клиентской части.
mmm_kazan
Участник со стажем


Вступление в Клуб: 28.03.2018
СообщениеВт Апр 03, 2018 13:07    Ответить с цитатой
Полезность: Нет оценки
Этот блок только сегодня пытался применить

::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_NAME] := 'mmm.txt';
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_PATH] := '.';
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_TYPE] := true; -- С сервера
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_DELETE] := true; -- Потом удалить
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_NAME] := 'mmm.txt';
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_PATH] := 'p:\marat\';
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_TYPE] := false; -- На клиента
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_DELETE] := false;
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеВт Апр 03, 2018 13:08    Ответить с цитатой
Полезность: 1
откройте еще один файл FileId, записывайте в него
stdio.put_line(FileId, Str, true, null, stdio.DOSTEXT); -- уточните параметры
закройте
отправьте на локал
mmm_kazan
Участник со стажем


Вступление в Клуб: 28.03.2018
СообщениеВт Апр 03, 2018 13:16    Ответить с цитатой
Полезность: Нет оценки
Вроде пробовал
В параметрах не могу разобраться.

fileW := stdio.open(P_FILE_ALT.[DST_PATH], 'mmm.txt', 'w');
stdio.put_line(fileW,'</ВХОДЯЩАЯ_ОПИСЬ>');
stdio.close(fileW);
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_NAME] := 'mmm.txt';
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_PATH] := P_FILE_ALT.[DST_PATH];
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_TYPE] := true; -- С сервера
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_DELETE] := true; -- Потом удалить
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_NAME] := 'mmm.txt';
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_PATH] := P_FILE_ALT.[DST_PATH];
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_TYPE] := false; -- На клиента
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_DELETE] := false;
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеВт Апр 03, 2018 14:22    Ответить с цитатой
Полезность: Нет оценки
а почему 0?
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_NAME] := 'mmm.txt';

и вначале нужно ::[DOCUMENT].[COPYFILES].tbl_F$L.delete;
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеВт Апр 03, 2018 14:28    Ответить с цитатой
Полезность: Нет оценки
И не забыть про

stdio.put_line_buf("<%PLPCALL [DOCUMENT].[COPYFILES]() %>");

в конце

предварительно поставив галку "передает команды в буфер" в доп. свойствах операции
mmm_kazan
Участник со стажем


Вступление в Клуб: 28.03.2018
СообщениеВт Апр 03, 2018 14:30    Ответить с цитатой
Полезность: Нет оценки
На счет индекса - не знаю. Там в коде, откуда я выдернул текст был цикл по i.
Больше интересует вопрос по путям. PATH.
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеВт Апр 03, 2018 14:38    Ответить с цитатой
Полезность: Нет оценки
индекс важен
определитесь, откуда /куда копируете
в последнем примере источник и получатель одинаковы


::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_PATH] := P_FILE_ALT.[DST_PATH];
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_PATH] := P_FILE_ALT.[DST_PATH];
mmm_kazan
Участник со стажем


Вступление в Клуб: 28.03.2018
СообщениеВт Апр 03, 2018 14:48    Ответить с цитатой
Полезность: Нет оценки
Строка
stdio.put_line_buf("<%PLPCALL [DOCUMENT].[COPYFILES]() %>");

Не проходит, хотя галку вроде поставил.
mmm_kazan
Участник со стажем


Вступление в Клуб: 28.03.2018
СообщениеВт Апр 03, 2018 14:51    Ответить с цитатой
Полезность: Нет оценки
Изначально кусок такой кода

fileW := stdio.open(P_FILE_ALT.[DST_PATH], 'mmm.txt', 'w');
stdio.put_line(fileW,'</ВХОДЯЩАЯ_ОПИСЬ>', true, null, stdio.DOSTEXT);
stdio.close(fileW);

::[DOCUMENT].[COPYFILES].tbl_F$L.delete;
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[SRC_NAME] := 'mmm.txt';
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[SRC_PATH] := P_FILE_ALT.[SRC_PATH];
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[SRC_TYPE] := true; -- С сервера
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[SRC_DELETE] := true; -- Потом удалить
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[DST_NAME] := 'mmm.txt';
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[DST_PATH] := P_FILE_ALT.[DST_PATH];
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[DST_TYPE] := false; -- На клиента
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[DST_DELETE] := false;

--stdio.put_line_buf("<%PLPCALL [DOCUMENT].[COPYFILES]() %>");
exit;
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеВт Апр 03, 2018 14:53    Ответить с цитатой
Полезность: Нет оценки
stdio.put_line_buf('<%PLPCALL [DOCUMENT].[COPYFILES]() %>');

апострофы вместо "

я с клиент скрипта копировал, лажанулся Smile
mmm_kazan
Участник со стажем


Вступление в Клуб: 28.03.2018
СообщениеВт Апр 03, 2018 14:53    Ответить с цитатой
Полезность: Нет оценки
А при таком

fileW := stdio.open(P_FILE_ALT.[SRC_PATH], 'mmm.txt', 'w');
stdio.put_line(fileW,'</ВХОДЯЩАЯ_ОПИСЬ>', true, null, stdio.DOSTEXT);
stdio.close(fileW);

::[DOCUMENT].[COPYFILES].tbl_F$L.delete;
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[SRC_NAME] := 'mmm.txt';
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[SRC_PATH] := P_FILE_ALT.[SRC_PATH];
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[SRC_TYPE] := true; -- С сервера
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[SRC_DELETE] := true; -- Потом удалить
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[DST_NAME] := 'mmm.txt';
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[DST_PATH] := P_FILE_ALT.[DST_PATH];
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[DST_TYPE] := false; -- На клиента
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[DST_DELETE] := false;

--stdio.put_line_buf("<%PLPCALL [DOCUMENT].[COPYFILES]() %>");
exit;


Говорит, что

В настоящий момент операция невозможна:
[mmm.txt] Операция не может быть выполнена для этого файла
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
На страницу Пред.  1, 2, 3  След.
Страница 2 из 3

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru