|
05.08.2007, 08:04 | #1 |
Участник
|
Кратко: Есть датапорт, который выгружает данные с одной таблицы в несколько файлов. Формат файла фиксированный, разделители "новая строка".
В каждом создаваемом файле дополнительно требуется сделать шапку в несколько строк. Инструкция записи в файл: CurrFile.WRITE( TextFormat.DOS2Win('Платежное Поручение номер ' + FORMAT(PLE."Document No.") + ' дата ' + FORMAT(PLE."Posting Date"))); CurrFile.WRITE( TextFormat.DOS2Win('Назначение платежа ' + FORMAT(DocType))); Это шапка. после нее выгружаются данные с таблицы, по требуемому критерию. Проблема: 1) Шапка выводится одной строкой, пробовала разнями способами перенос делать - не помогает. 2) в 1ом созданном файле строка выгрузки с таблицы выводится без перевода строки, сразу за шапкой, в остальных 30 файлах - как положено, с новой строки.
__________________
Ведрусса. Я не волшебник, а только учусь |
|
06.08.2007, 08:42 | #2 |
Участник
|
Можно использовать Outstream и Writetext
|
|
07.08.2007, 05:46 | #3 |
Участник
|
Респект. Потоком получается корректно. Ранее не использовала.
Проблема для меня имеет решение, но хотелось бы узнать почему в датапорте срабатывают только потоки? Для остальных попытвашихся: спасибо за участие, символы 10 и 13 верны, но в данной функции не подходят.
__________________
Ведрусса. Я не волшебник, а только учусь |
|
08.08.2007, 15:41 | #4 |
Участник
|
Цитата:
Просто добавте в конце выводимой строки и система сама запишет. См также help: = WRITE (File) - Use this function to write to an ASCII or binary file. :-) = TEXTMODE (File) - This function is used to set whether a file should be opened as an ASCII file or a binary file. The function can also be used to determine what the current setting of this option is for a file. [IsTextmode] := File.TEXTMODE([SetTextmode]) IsTextmode: boolean The current setting of this option for the file. If IsTextmode is... TRUE An ASCII file FALSE A binary file P.S. Возврат каретки (код 0Dh), Перевод строки (0Аh) (сокращенно CR/LF) |
|
10.08.2007, 05:07 | #5 |
Участник
|
Цитата:
2) Напиши пожалуйста как правильно включить код перевода в выгружаемую строку, чотб он действительно сработал. Может я что-то не так делала. (в файле идет преобразование текста DOS2WIN) 3) Может этот код срабатывает ТОЛЬКО в режиме TEXTMODE? .... В любом случае задача реализована и файлы корректно обработались только с использованием потока, хотя я раньше никогда его не применяла... в файлах. На сей момент у меня 2 реализации. Через датапорт и отчетом. С отчета полечилось более корректно, со всеми форматированиями, выравниваниями, группировками и итоговыми и начальными шапками. Делаю вывод: чтоб получить красоту по формату, удобнее использовать отчеты, а датапорты - как элемент переноса данных и простой построчной выгрузки из "временной" таблицы.
__________________
Ведрусса. Я не волшебник, а только учусь |
|
06.08.2007, 19:49 | #6 |
Участник
|
Добавте в момент перевода символы возврата каретки и новой строки (как раньше делали с С под DOS) и все будет работать (это же текстовый файлик)
|
|
06.08.2007, 19:59 | #7 |
MCTS
|
Символы 13 и 10 если не ошибаюсь.
ch10 :=10; //тип char ch13 :=13; //тип char NEW STRING = STRSUBSTNO('%1%2',ch10,ch13); |
|
07.08.2007, 11:20 | #8 |
Участник
|
По аналогии с потоком получилось и через CurrFile.WRITE сделать
__________________
Ведрусса. Я не волшебник, а только учусь |
|