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

Вывод данных в нескольких txt файлах

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих
Предыдущая тема :: Следующая тема  
Автор Сообщение
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    Ответить с цитатой
Полезность: Нет оценки
Удалять их вам тоже никто не запрещает в этом же цикле, после копирования на клиента Laughing

Ну или удалять всё из папки (побыстрее будет, но думаю разницы не заметите) при запуске операшки, ну это если вариант с запуском только 1й операции поставите.
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеПт Май 27, 2016 13:17    Ответить с цитатой
Полезность: Нет оценки
yaffil пишет:
Удалять их вам тоже никто не запрещает в этом же цикле, после копирования на клиента Laughing

Ну или удалять всё из папки (побыстрее будет, но думаю разницы не заметите) при запуске операшки, ну это если вариант с запуском только 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 файл архива передавался на клиента.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих Часовой пояс: GMT + 3
Страница 1 из 1

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