Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
jamil Участник - экстремал
Вступление в Клуб: 11.08.2014
|
Чт Май 26, 2016 07:50  Вывод данных в нескольких txt файлах |
|
Полезность: Нет оценки
|
Задача стоит такая: пользователь задает промежуток дат. Нужно чтобы для каждого числа в этом промежутке создавался отдельный txt файл с данными о платежных документах.
Как это реализовать? |
|
 |
Эмиралька Эксперт
Вступление в Клуб: 09.11.2015
|
Чт Май 26, 2016 08:48  Re: Вывод данных в нескольких txt файлах |
|
Полезность: Нет оценки
|
jamil пишет: | Задача стоит такая: пользователь задает промежуток дат. Нужно чтобы для каждого числа в этом промежутке создавался отдельный txt файл с данными о платежных документах.
Как это реализовать? |
*проведённых
Код: | var procedure ProcessDay(p_day date) is
begin
::[REPS_DATA].[LIB_FILE].CreateFile('./'||to_char(p_day,'yyyymmdd.txt'));
for(
select doc(
doc%id:id
) in ::[MAIN_DOCUM] all
where
upper(x%state) = 'PROV'
and x.[DATE_PROV] >= p_day
and x.[DATE_PROV] < p_day + 1
) loop
::[REPS_DATA].[LIB_FILE].AppendFileStr('./'||to_char(p_day,'yyyymmdd.txt'), doc.id);
end loop;
end;
for i in 0 .. d_End - d_Beg loop
ProcessDay( d_Beg + i );
end loop;
|
|
|
 |
jamil Участник - экстремал
Вступление в Клуб: 11.08.2014
|
Чт Май 26, 2016 09:18  Re: Вывод данных в нескольких txt файлах |
|
Полезность: Нет оценки
|
Эмиралька пишет: | jamil пишет: | Задача стоит такая: пользователь задает промежуток дат. Нужно чтобы для каждого числа в этом промежутке создавался отдельный txt файл с данными о платежных документах.
Как это реализовать? |
*проведённых
Код: | var procedure ProcessDay(p_day date) is
begin
::[REPS_DATA].[LIB_FILE].CreateFile('./'||to_char(p_day,'yyyymmdd.txt'));
for(
select doc(
doc%id:id
) in ::[MAIN_DOCUM] all
where
upper(x%state) = 'PROV'
and x.[DATE_PROV] >= p_day
and x.[DATE_PROV] < p_day + 1
) loop
::[REPS_DATA].[LIB_FILE].AppendFileStr('./'||to_char(p_day,'yyyymmdd.txt'), doc.id);
end loop;
end;
for i in 0 .. d_End - d_Beg loop
ProcessDay( d_Beg + i );
end loop;
|
|
Не нашел библиотеку [LIB_FILE]
Администратор словаря данных
Версия 6.332.0.40
Версия ТЯ 7.1.1.6
Версия рабочего места Администратора 6.33.10 |
|
 |
jamil Участник - экстремал
Вступление в Клуб: 11.08.2014
|
Чт Май 26, 2016 09:19  Re: Вывод данных в нескольких txt файлах |
|
Полезность: Нет оценки
|
Эмиралька пишет: | jamil пишет: | Задача стоит такая: пользователь задает промежуток дат. Нужно чтобы для каждого числа в этом промежутке создавался отдельный txt файл с данными о платежных документах.
Как это реализовать? |
*проведённых
Код: | var procedure ProcessDay(p_day date) is
begin
::[REPS_DATA].[LIB_FILE].CreateFile('./'||to_char(p_day,'yyyymmdd.txt'));
for(
select doc(
doc%id:id
) in ::[MAIN_DOCUM] all
where
upper(x%state) = 'PROV'
and x.[DATE_PROV] >= p_day
and x.[DATE_PROV] < p_day + 1
) loop
::[REPS_DATA].[LIB_FILE].AppendFileStr('./'||to_char(p_day,'yyyymmdd.txt'), doc.id);
end loop;
end;
for i in 0 .. d_End - d_Beg loop
ProcessDay( d_Beg + i );
end loop;
|
|
Не нашел библиотеку [LIB_FILE]
Администратор словаря данных
Версия 6.332.0.40
Версия ТЯ 7.1.1.6
Версия рабочего места Администратора 6.33.10 |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Чт Май 26, 2016 09:54   |
|
Полезность: Нет оценки
|
Цитата: | Нужно чтобы для каждого числа в этом промежутке создавался отдельный txt файл с данными о платежных документах.
Как это реализовать? |
Интересно, а для одной даты реализовано? |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Чт Май 26, 2016 10:01  Re: Вывод данных в нескольких txt файлах |
|
Полезность: 1
|
jamil пишет: | Задача стоит такая: пользователь задает промежуток дат. Нужно чтобы для каждого числа в этом промежутке создавался отдельный txt файл с данными о платежных документах.
Как это реализовать? |
Как то так. Ну и в цикл это всё, к названию файла можете добавлять день например. (file_name:=to_char(sysdate,'DDMMYYYY')||'_'||file_name)
file_path [FILE$PATH] :='./file';
file_name [FILE$PATH] :='DOKI.txt'; --Имя файла
file integer;
v_res integer;
begin
file_app := stdio.open(file_path,file_name, 'w');
rezult := 'ваш текст';
v_res := stdio.write_str(file, rezult, null, stdio.WINTEXT, false);
if v_res < 0 then
pragma error ('Ошибка при записи в файл =' || file_path || file_name);
end if;
stdio.close(file);
end; |
|
 |
jamil Участник - экстремал
Вступление в Клуб: 11.08.2014
|
Чт Май 26, 2016 12:38  Re: Вывод данных в нескольких txt файлах |
|
Полезность: Нет оценки
|
yaffil пишет: | jamil пишет: | Задача стоит такая: пользователь задает промежуток дат. Нужно чтобы для каждого числа в этом промежутке создавался отдельный txt файл с данными о платежных документах.
Как это реализовать? |
Как то так. Ну и в цикл это всё, к названию файла можете добавлять день например. (file_name:=to_char(sysdate,'DDMMYYYY')||'_'||file_name)
file_path [FILE$PATH] :='./file';
file_name [FILE$PATH] :='DOKI.txt'; --Имя файла
file integer;
v_res integer;
begin
file_app := stdio.open(file_path,file_name, 'w');
rezult := 'ваш текст';
v_res := stdio.write_str(file, rezult, null, stdio.WINTEXT, false);
if v_res < 0 then
pragma error ('Ошибка при записи в файл =' || file_path || file_name);
end if;
stdio.close(file);
end; |
Как я понял в данном случаи файлы сохраняются на стороне сервера. А возможно ли чтобы они сохранялись на компе пользователя? |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Чт Май 26, 2016 12:49  Re: Вывод данных в нескольких txt файлах |
|
Полезность: Нет оценки
|
jamil пишет: |
Как я понял в данном случаи файлы сохраняются на стороне сервера. А возможно ли чтобы они сохранялись на компе пользователя? |
Можете тут же после stdio.close(file) копировать на клиенте, примеров предостаточно в ЦФТ такого копирования. Единственное что надо или операцию тогда ограничить (не более 1й запущенной) или в названия файлов добавлять ИД сессии, чтобы не перезатирались.
Вероятность, конечно, маленькая, но она есть. |
|
 |
jamil Участник - экстремал
Вступление в Клуб: 11.08.2014
|
Пт Май 27, 2016 08:03  Re: Вывод данных в нескольких txt файлах |
|
Полезность: Нет оценки
|
yaffil пишет: | jamil пишет: |
Как я понял в данном случаи файлы сохраняются на стороне сервера. А возможно ли чтобы они сохранялись на компе пользователя? |
Можете тут же после stdio.close(file) копировать на клиенте, примеров предостаточно в ЦФТ такого копирования. Единственное что надо или операцию тогда ограничить (не более 1й запущенной) или в названия файлов добавлять ИД сессии, чтобы не перезатирались.
Вероятность, конечно, маленькая, но она есть. |
Как быт с созданными файлами txt на стороне сервера? Они же будут захламлять папку сервера. |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Пт Май 27, 2016 09:27   |
|
Полезность: Нет оценки
|
Удалять их вам тоже никто не запрещает в этом же цикле, после копирования на клиента
Ну или удалять всё из папки (побыстрее будет, но думаю разницы не заметите) при запуске операшки, ну это если вариант с запуском только 1й операции поставите. |
|
 |
Эмиралька Эксперт
Вступление в Клуб: 09.11.2015
|
Пт Май 27, 2016 13:17   |
|
Полезность: Нет оценки
|
yaffil пишет: | Удалять их вам тоже никто не запрещает в этом же цикле, после копирования на клиента
Ну или удалять всё из папки (побыстрее будет, но думаю разницы не заметите) при запуске операшки, ну это если вариант с запуском только 1й операции поставите. |
только не в этом же!
для того, чтобы операция копирования на клиента произошла, серверу следует послать сигнал АРМ Навигатор для запуска копирования, и к этому моменту надо, чтобы файлы были.
jamil пишет: | Не нашел библиотеку [LIB_FILE]
Администратор словаря данных
Версия 6.332.0.40
Версия ТЯ 7.1.1.6
Версия рабочего места Администратора 6.33.10 |
Я извиняюсь, а где ищете?
Это прикладной функционал.
Существует с 2009 года. Ну ладно, в РБО с 2010. |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Пн Июн 06, 2016 11:53   |
|
Полезность: Нет оценки
|
В одном из банков так делали выписки для клиентов. На сервере генерировались 100500 файлов, жались там же архиватором и потом 1 файл архива передавался на клиента. |
|
 |
|