Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Clarion Programming / ГЛАВА 10 - Отчеты

.htm
Скачиваний:
34
Добавлен:
02.05.2014
Размер:
81.72 Кб
Скачать

ГЛАВА 10 - Отчеты     Поиск Рубрикатор Форумы Новости сервера Учебный центр Книжный магазин Авторам Море(!) аналитической информации! :: CITFORUM.RU Вы можете приобрести полную версию сайта на CD-ROM CITFORUM.RU >>> ПРОГРАММИРОВАНИЕ      [http://www.citforum.ru/programming/clarion/cla_10.shtml]

Скоро! Восьмая техническая конференция

"Корпоративные базы данных 2003"

Москва, 17-18 апреля 2003 года

Компания Microsoft приглашает вас посетить бесплатный семинар

"День разработчика 2003",

который пройдет 11 марта в Санкт-Петербурге,

13 марта - в Екатеринбурге, 18 марта - в Киеве.

Cпешите зарегистрироваться! Количество мест ограничено! ГЛАВА 10 - Отчеты Структура отчетов REPORT (описывает структуру отчета) APPEND (дописывает выводимое в конец файла) DEVICE (задает устройство, на которое вывести отчет) LENGTH (число строк на странице) LINE (переменная - счетчик строк) PAGE (переменная - счетчик страниц) PRINTER (логическая поддержка принтера) WIDTH (максимальная ширина страницы)

Элементы отчета HEADER (заголовок страницы, верхний колонтитул) DETAIL (тело отчета) FOOTER (подножие страницы, нижний колонтитул)

Атрибуты элементов отчета ALLOW (контроль висячей строки) ALONE (структуру DETAIL печатать без HEADER/FOOTER) FIXED (структура фиксированной длины) SEPARATE (промежуток между элементами отчета)

Размещение полей ROW (строка) COL (столбец) SUPPRESS (не печатать элемент, если он пустой)

Поля в отчете CONTROL (управляющая последовательность для принтера) STRING (переменная отчета) TEXT (многострочное поле отчета)

Атрибуты полей CLIP (отсечь хвостовые пробелы) LFT, RHT, CENT (методы выравнивания полей) UPR, LWR, CAP (методы капитализации) USE (переменная, связанная с полем) WRAP (разрешить перенос слов)

Команды отчета OPEN (открыть отчет для обработки) CLOSE (закрыть текущий отчет) PRINT (напечатать элемент отчета) ROWS (количество строк) Переполнение страницы

Шаблоны управляющих кодов принтера

СТРУКТУРА ОТЧЕТОВ REPORT (описывает структуру отчета) метка REPORT[APPEND][DEVICE()][LENGTH()][LINE()][PAGE()] [PRE()][PRINTER()][WIDTH()] [метка] [HEADER[ALLOW()][FIXED][PRE()][SEPARATE()] [ROW()] [COL()] [SUPPRESS()] [метка] [STRING()] [метка] [TEXT()] [метка] [CONTROL()] .] [метка] [DETAIL[ALLOW()][ALONE][FIXED][PRE()][SEPARATE()] [ROW()] [COL()] [SUPPRESS()] [метка] [STRING()] [метка] [TEXT()] [метка] [CONTROL()] .] [метка] [FOOTER[ALLOW()][FIXED][PRE()][SEPARATE()] [ROW()] [COL()] [SUPPRESS()] [метка] [STRING()] [метка] [TEXT()] [метка] [CONTROL()] .] . APPEND Дописать отчет в конец файла. DEVICE Устройство для вывода отчета. LENGTH Максимальное число строк на странице. LINE Переменная - счетчик строк. PAGE Переменная - счетчик страниц. PRE Префикс отчета или элемента отчета. PRINTER Название принтера из файла описаний принтеров. WIDTH Максимальная длина строки. HEADER Заголовок страницы. DETAIL Тело отчета. FOOTER Подножие страницы. ALLOW Задает минимальное число строк, которое надо пропустить после печати данного элемента отчета. ALONE Описывает отчет без заголовков или подножий. FIXED Описывает структуру фиксированной длины. SEPARATE Задает число пустых строк между элементами отчета. ROW Задает строку. COL Задает столбец. SUPPRESS Подавляет печать пустого элемента. STRING Переменная или символьная константа. TEXT Многострочное символьное поле. CONTROL Управляющий код принтера. Оператор REPORT задает начало структуры-отчета. HEADER, DETAIL и FOOTER это подструктуры, из которых формируется отчет. Отчет должен быть явно открыт оператором OPEN. Элементы открытого отчета можно выводить на печать (1) оператором PRINT. При переполнении страницы могут автоматически печататься структуры HEADER и FOOTER. Поскольку этот документ - руководство по языку, то все атрибуты и операторы, связанные с отчетами, мы рассмотрим ниже более подробно. Обычно, отчеты Кларион "рисуются" с помощью средств форматирования РЕДАКТОРА ТЕКСТОВ и ГЕНЕРАТОРА ПРИЛОЖЕНИЙ с гарантированно правильным синтаксисом. При этом становится необязательным ручное создание структур отчетов. (2) (А.С.П.

(1) - Под выводом на печать подразумевается не только вывод на принтер, но и на любое устройство, пригодное для вывода сформированного отчета, например файл или экран. (2) - На данный момент (19.05.94) у меня есть версия Clarion Da- taBase Developer 3.007.105, в которой "ручное создание" отчетов, а точнее правка того, что в них наворотил ДИЗАЙ- НЕР, далеко не необязательна!) Пример: CustRpt REPORT !Отчет по покупателям !описания элементов отчета . !Конец описания отчета APPEND (дописывает выводимое в конец файла) APPEND APPEND работает вместе с атрибутом DEVICE. Если в качестве устройства для печати задано имя файла, то параметр APPEND не позволит стереть существующий файл, отчет будет дописан в конец файла. Пример: Report REPORT,DEVICE('MYFILE.RPT'),APPEND !Печать дописыванием в конец фай- ! ла. !описания элементов отчета . DEVICE (задает устройство, на которое вывести отчет) DEVICE(имя) имя Строковая константа, переменная или выражение задающее устройство или имя файла. Атрибут отчета DEVICE задает устройство, на которое будет выводиться отчет. Если ИМЯ не является именем стандартного устройством DOS, подразумевается, что это имя файла. Если ИМЯ, это имя файла, то файл создается на указанном диске в указанном каталоге. Если диск и/или каталог не заданы, то файл создается в текущем каталоге текущего диска. Если заданный файл уже существует, то он будет замещен новым, если отчет не будет иметь атрибута APPEND. Если спецификация файла некорректна, то DEVICE игнорируется и отчет печатается на LPT1. Если ИМЯ - CON, то отчет будет выводиться на экран, начиная с текущей позиции курсора. Можно использовать SETCURSOR для установки курсора перед его выводом на экран. Отчеты могут быть выведены на следующие стандартные устройства ДОС: CON Консоль PRN Первый параллельный порт LPT1 Первый параллельный порт LPT2 Второй --/-- --/-- LPT3 Третий --/-- --/-- AUX Первый последовательный порт COM1 Первый последовательный порт COM2 Второй последовательный порт NUL Пустое устройство Пример: Report REPORT,DEVICE('LPT2') !Отчет - на второй принтер Report1 REPORT,DEVICE('C:\REPORTS\CUSTLST.RPT')!Отчет - в файл Report2 REPORT,DEVICE(DeviceName)!Имя устройства хранится в пе- ! ременной DEVICENAME См. также: SETCURSOR LENGTH (число строк на странице) LENGTH(value) value Целочисленная константа или переменная. Атрибут LENGTH задает максимальное число строк на странице. Автоматический переход на новую страницу происходит на основании значения VALUE. Если VALUE=0, то отслеживание переполнения страницы выключается. VALUE минус число_строк_для_HEADER_и_FOOTER будет числом строк, доступным для печати DETAIL-структур. Некоторые принтеры сами отслеживают длину страницы. Если VALUE больше или равно внутренней длине страницы принтера, то может произойти неожиданный перевод формата. Пример: CustRpt REPORT,LENGTH(60) !В отчете 60 строк на странице !описания элементов отчета . !Конец описаний отчета CustRpt2 REPORT,LENGTH(RptLength)!Число строк на странице хра- !нится в переменной RptLength !описания элементов отчета . !Конец описаний отчета См. также: Переполнение страницы LINE (переменная - счетчик строк) LINE(variable) variable Метка числовой переменной. Атрибут отчета LINE задает переменную, которая станет счетчиком строк. При открытии отчета, эта переменная получает значение 1 и сбрасывается в единицу при каждом переполнении страницы. По мере печати HEADER, DETAIL или FOOTER, переменная увеличивается на число напечатанных строк. Эту переменную можно использовать, например, для нумерации строк отчета. Пример: CustRpt REPORT,LINE(LineNbr) !Счетчик - переменная LineNbr !описания элементов отчета . !Конец описаний отчета См. также: Переполнение страницы PAGE (переменная - счетчик страниц) PAGE(variable) variable Метка числовой переменной. Атрибут отчета PAGE задает переменную, которая будет использоваться как счетчик страниц. Эту переменную можно будет использовать для печати номера текущей страницы. При открытии отчета, переменная устанавливается в единицу, и увеличивается при переполнении страницы или под управлением программы. Пример: CustRpt REPORT,PAGE(PageCount) !Счетчик страниц - PageCount !описания элементов отчета . !Конец описаний отчета PRINTER (логическая поддержка принтера) PRINTER(name) name Строковая константа, переменная или выражение содержащая имя принтера, в том виде, в котором оно задано в файле описаний принтеров. PRINTER задает логическую поддержку принтера для отчета. Параметр NAME содержит имя принтера, используемого для печати отчета, в том виде, в каком это имя заданно в файле описаний принтеров. Файл описаний принтеров, по умолчанию, PRINTER.CTL. Можно изменить это имя, задав переменную окружения CLAPRINTER. Она может быть задана: в файле конфигурации программы (.INI-файле), в командной строке при выполнении программы, оператором SETCOMMAND или оператором ДОС SET. Пример: Report REPORT,PRINTER('EPSON LQ-1500') !Используем Epson LQ-1500 !описания элементов отчета . CODE SETCOMMAND(' CLAPRINTER=Control.Prn') !Меняем файл описаний принтеров OPEN(Report) См. также: SETCOMMAND WIDTH (максимальная ширина страницы) WIDTH(value) value Целочисленная константа от 1 до 255. Атрибут WIDTH задает максимальное количество символов в самой длинной строке отчета. Значение VALUE используется форматером отчетов для горизонтального позиционирования и центрирования. Пример: CustRpt REPORT,WIDTH(80) !Report, max width 80 columns !описания элементов отчета . !Конец описаний отчета ЭЛЕМЕНТЫ ОТЧЕТА HEADER (заголовок страницы, верхний колонтитул) [метка] [HEADER[ALLOW()][FIXED][PRE()][SEPARATE()] [ROW()] [COL()] [SUPPRESS()] [метка] [STRING()] [метка] [TEXT()] [метка] [CONTROL()] .] ALLOW Сколько строк, как минимум, оставить на странице для печати DETAIL-структур. FIXED Объявляет заголовок фиксированной длины. PRE Префикс для элементов HEADER-структуры. SEPARATE Сколько строк пропустить после заголовка. ROW Номер строки для полей типа STRING, TEXT или CONTROL. COL Номер столбца для полей типа STRING, TEXT или CONTROL. SUPPRESS Не печатать строку, если она пустая. STRING Поле, содержащее значение переменной или символьная константа. TEXT Многострочное символьное поле. CONTROL Управляющая последовательность принтера. В HEADER-структуре задаются строки, которые печатаются в начале каждой страницы. HEADER-структура должна завершаться точкой или оператором END. В отчете может быть только один заголовок. Заголовок может быть явно выведен на печать оператором PRINT. Если этого не было, то он автоматически печатается при печати первой же структуры DETAIL, у которой нет атрибута ALONE. Заголовок автоматически печатается при переполнении страницы. Пример: CustRpt REPORT !Отчет о покупателях Head HEADER ! начало описания заголовка !элементы заголовка . ! конец описания заголовка . !Конец описаний отчета См. также: Переполнение страницы DETAIL(тело отчета) [метка] [DETAIL[ALLOW()][ALONE][FIXED][PRE()][SEPARATE()] [ROW()] [COL()] [SUPPRESS()] [метка] [STRING()] [метка] [TEXT()] [метка] [CONTROL()] .] ALONE Структура DETAIL ДОЛЖНА печататься без заголовков или подножий. ALLOW Сколько строк, как минимум, оставить на странице для печати DETAIL-структур. FIXED Объявляет DETAIL как структуру фиксированной длины. PRE Префикс для элементов DETAIL-структуры. SEPARATE Сколько строк пропустить после DETAIL. ROW Номер строки для полей типа STRING, TEXT или CONTROL. COL Номер столбца для полей типа STRING, TEXT или CONTROL. SUPPRESS Не печатать строку, если она пустая. STRING Поле, содержащее значение переменной или символьная константа. TEXT Многострочное символьное поле. CONTROL Управляющая последовательность принтера. DETAIL-структура, это строки, составляющие тело отчета. Она должна заканчиваться точкой или оператором END. В отчете может быть несколько DETAIL-структур. DETAIL-структура НИКОГДА не печатается автоматически, следовательно, она ДОЛЖНА быть явно напечатана оператором PRINT. Из-за этого, каждая DETAIL-структура отчета должна иметь свою метку. DETAIL-структура может быть напечатана при необходимости. Поэтому можно иметь несколько DETAIL-структур, что даст возможность, скажем печатать необязательные заголовки и подножия для групп или печатать разные формы в зависимости от печатаемых данных. Пример: CustRpt REPORT !Отчет о покупателях Head HEADER ! начало описания заголовка !описания элементов структуры . ! конец описания заголовка GroupHead DETAIL ! начало описания DETAIL !описания элементов структуры . ! конец описания DETAIL CustDetail DETAIL ! начало описания DETAIL !описания элементов структуры . ! конец описания DETAIL . !Конец описаний отчета См. также: PRINT FOOTER (подножие страницы, нижний колонтитул) [метка] [FOOTER[ALLOW()][FIXED][PRE()][SEPARATE()] [ROW()] [COL()] [SUPPRESS()] [метка] [STRING()] [метка] [TEXT()] [метка] [CONTROL()] .] ALLOW Сколько строк, как минимум, оставить на странице для печати DETAIL-структур. FIXED Объявляет FOOTER как структуру фиксированной длины. PRE Префикс для элементов FOOTER-структуры. SEPARATE Сколько строк пропустить после подножия. ROW Номер строки для полей типа STRING, TEXT или CONTROL. COL Номер столбца для полей типа STRING, TEXT или CONTROL. SUPPRESS Не печатать строку, если она пустая. STRING Поле, содержащее значение переменной или символьная константа. TEXT Многострочное символьное поле. CONTROL Управляющая последовательность принтера. Структура FOOTER содержит строки, которые печатаются в конце каждой страницы. FOOTER-структура ДОЛЖНА заканчиваться точкой или оператором END. В отчете может быть только одно подножие. FOOTER автоматически печатается внизу страницы при переполнении страницы. Можно явно отпечатать подножие оператором PRINT. Подножие автоматически печатается внизу последней страницы при закрытии отчета, кроме того случая, когда последняя напечатанная DETAIL-структура не имела атрибута ALONE. Пример: CustRpt REPORT !Отчет по покупателям Head HEADER ! начало описания заголовка !описания элементов структуры . ! конец описания заголовка GroupHead DETAIL ! начало описания DETAIL !описания элементов структуры . ! конец описания DETAIL CustDetail DETAIL ! начало описания DETAIL !описания элементов структуры . ! конец описания DETAIL Foot FOOTER ! начало описания подножия !описания элементов структуры . ! конец описания подножия . !Конец описаний отчета АТРИБУТЫ ЭЛЕМЕНТОВ ОТЧЕТА ALLOW (контроль висячей строки) ALLOW(value) value Целочисленная константа или переменная, содержащая число строк. Атрибут ALLOW разработан для подавления "сирот", висячих строк, при печати. VALUE задает минимальное число строк, которое должно оставаться для печати DETAIL-структур после печати заголовков, подножий и других DETAIL-структур. Если для размещения DETAIL-структуры не хватает строк, то происходит ПЕРЕПОЛНЕНИЕ СТРАНИЦЫ. Допустим, у отчета LENGTH(60) и 50 строк уже напечатано на странице (внутренний счетчик строк=51). Если подножие занимает 3 строки, то для DETAIL-структур остается 7 строк. Если DETAIL-структура занимает 5 строк, то все нормально - ей хватит места. Если же у DETAIL-структуры есть атрибут ALLOW(5), то произойдет ПЕРЕПОЛНЕНИЕ СТРАНИЦЫ перед печатью DETAIL-структуры. Элементарная арифметика: осталось 7 строк, минус 5 (которые займет сама DETAIL-структура) получим две. А 2, это несколько меньше, чем 5, требуемых атрибутом ALLOW(5). Для вычисления свободного места на странице используются еще и значения атрибутов SEPARATE. Пример: CustRpt REPORT,LENGTH(60) !60 строк на странице отчета Head HEADER !описания элементов структуры . GroupHead DETAIL,ALLOW(5) !Must allow 5 CustDetail lines !5 строк - элементы структуры ! after the group header . CustDetail DETAIL !Элементы DETAIL !1 строка - элемент структуры . Foot FOOTER !Это подножие занимает до 3 строк !3 строки - элементы структуры . . !Конец описаний отчета ALONE (структуру DETAIL печатать без HEADER/FOOTER) ALONE Этот атрибут говорит о том, что DETAIL-структуру надо печатать одну на странице без каких-либо HEADER и FOOTER. Возможное использование титульные листы отчетов и страницы ИТОГО. Пример: CustRpt REPORT !Отчет по покупателям Head HEADER ! начало описания заголовка !описания элементов структуры . ! конец описания заголовка TitlePage DETAIL,ALONE !DETAIL-структура титульного !листа !описания элементов структуры . ! конец описания DETAIL CustDetail DETAIL ! начало описания DETAIL !описания элементов структуры . ! конец описания DETAIL Foot FOOTER ! начало описания подножия !описания элементов структуры . . ! конец подножия и отчета FIXED (структура фиксированной длины) FIXED FIXED используется совместно с оператором SUPPRESS. Он гарантирует, что структура ВСЕГА будет занимать заданное число строк на странице. Хорошим примером этому могут служить почтовые этикетки, для которых иногда надо подавлять пустые строки, но сами этикетки должны иметь постоянную длину. FIXED дополняет структуру таким же количеством пустых строк, какое было пропущено оператором SUPPRESS (по-английски SUPRESSed :). Пример: CustRpt REPORT !Отчет по покупателям Head HEADER ! начало описания заголовка !описания элементов структуры . ! конец описания заголовка GroupHead DETAIL ! начало описания DETAIL !описания элементов структуры ! конец описания DETAIL . CustDetail DETAIL,FIXED ! detail фиксированной длины !описания элементов структуры . ! конец описания DETAIL Foot FOOTER ! начало описания подножия !описания элементов структуры . . ! конец подножия и отчета SEPARATE (промежуток между элементами отчета) SEPARATE(value) value Целочисленная константа или переменная. Параметр атрибута SEPARATE задает число пустых строк, которые должны быть напечатаны сразу же после структуры. Пример: CustRpt REPORT !Отчет по покупателям Head HEADER ! начало описания заголовка !описания элементов структуры . ! конец описания заголовка GroupHead DETAIL,SEPARATE(2) ! !описания элементов структуры ! конец описания DETAIL . CustDetail DETAIL,SEPARATE(1) ! начало описания DETAIL !описания элементов структуры . ! конец описания DETAIL Foot FOOTER ! начало описания подножия !описания элементов структуры . . ! конец подножия и отчета РАЗМЕЩЕНИЕ ПОЛЕЙ ROW (строка) ROW(row[,column]) row Целочисленная константа, которая задает абсолютный номер строки для полей типа STRING, TEXT или CONTROL в составе структур HEADER, DETAIL или FOOTER. column Целочисленная константа, которая задает абсолютный номер столбца в столбце для полей типа STRING, TEXT или CONTROL в составе структур HEADER, DETAIL или FOOTER. ROW используется для управления размещением полей в структурах HEADER, DETAIL или FOOTER. Для размещения поля в заданном месте структуры, ROW порождает переводы строк, возвраты каретки и пробелы. Если пропущен параметр COLUMN, то поле помещается в первый столбец указанной строки. Параметр COLUMN порождает пробелы, как заполнитель для промежутков между полями. Пример: CustRpt REPORT !Отчет по покупателям CustDetail DETAIL,SEPARATE(1) ! начало описания DETAIL ROW(2,5) STRING(20),USE(Cus:Name) !Cus:Name в строке 2 столбце 5 ROW(3) STRING(30),USE(Address) !Address at row 3 col 1 . ! конец описания DETAIL . !Конец описаний отчета COL (столбец) COL(column) column Целочисленная константа, которая задает абсолютный номер столбца для полей типа STRING, TEXT или CONTROL, которые находятся в одной строке с полем, описанным ранее. COL используется для размещения полей в строке в структурах HEADER, DETAIL или FOOTER. COL порождает пробелы, чтобы заполнить промежутки между полями. Пример: CustRpt REPORT !Отчет по покупателям CustDetail DETAIL,SEPARATE(l) ! начало описания DETAIL ROW(2.5) STRING(15),USE(FirstName) !FirstName в стр.2, стлб.5 COL(22) STRING(I).USE(Initial) !Initial в стлб.22 COL(24) STRING(15),USE(LastName) !LastName в стлб.24 ROW(3) STRING(30),USE(Address) !Address в стр.3 стлб.1 . ! конец описания DETAIL . !Конец описаний отчета SUPPRESS (не печатать элемент, если он пустой) SUPPRESS(строка) строка Номер строки, которую НЕ печатать. SUPPRESS задает строку, которая не печатается, если все переменные на ней пусты. Обычно используется с атрибутом FIXED. Пример: CustLabels REPORT !Почтовые этикетки CustDetail DETAIL,FIXED !detail постоянной длины ROW(2,5) STRING(15),USE(Company) ROW(3,5) STRING(1).USE(Contact) ROW(4,5) STRING(15),USE(Addressl) ROW(5,5) STRING(15),USE(Address2) Citystzip ROW(6,5) STRING(15) SUPPRESS(5) !Поле Address2 пусто? !Не печатать строку 5 . . !конец detail и отчета ПОЛЯ В ОТЧЕТЕ CONTROL (управляющая последовательность для принтера) | length | [метка] CONTROL( |constant| )[,USE()] | picture| length Целочисленная константа. Должна быть такой же, как и длина USE-переменной. constant Строковая константа, посылаемая на принтер. picture Форматирует значение, присвоенное CONTROL-полю, или значение USE-переменной. LENGTH это размер, достаточный для хранения ОТФОРМАТИРОВАННОЙ строки. Изначально, PICTURE заполнена пробелами. USE Переменная, содержащая управляющую последовательность. Должна быть такой длины, какая задана параметром LENGTH. CONTROL задает символьную строку, которая управляет действиями принтера. CONTROL-поле не влияет на положение полей типа STRING или TEXT. Однако, это поле может использоваться для изменения управляющих кодов для любых следующих за ним полей типа STRING или TEXT (СПА: здесь я совсем не уверен, как перевести fields that occur following the CONTROL declaration.) Если у CONTROL есть атрибут USE, то на принтер посылается управляющая последовательность, которая содержится в USE-переменной. Таким образом можно хранить последовательности для разных типов принтеров, и присваивать USE-переменной нужную для используемого в данный момент принтера. Если у отчета есть атрибут PRINTER, то строковая константа или USE-переменная должна содержать имя принтера, как он описан в файле управления принтерами (PRINTER.CTL). Пример: PrinterType STRING('EPSON LQ-1500') ItalicOn STRING('ITALIC ON') CustRpt REPORT,PRINTER(PrinterType) !Отчет по покупателям CustDetail DETAIL,SEPARATE(1) ! начало описания DETAIL ROW(2,5) CONTROL(4),USE(ItalicOn) !Управляем из переменной !ItalicOn - включить курсив ROW(2,5) STRING(15),USE(FirstName) COL(22) STRING(15),USE(LastName) ROW(3,1) CONTROL('COMPRESSED ON') !А этот Control из printer.ctl ROW(3) STRING(30),USE(Address) . . !Конец описаний отчета См. также: PRINTER STRING (переменная отчета) | length | |LFT | |UPR| [метка] STRING(|constant|)[,USE][,|RHT |][,|LWR|][,CLIP] | picture| |CENT| |CAP| length Числовая константа, задающая длину строки. В этом случае строка состоит из пробелов. constant Строковая константа. Длина строки становится равной длине константы. picture Используется для форматирования значения строки или ее USE-переменной. В этом случае длина строки это размер, достаточный для хранения отформатированной строки. Изначально строка заполняется пробелами. USE Задает переменную, со значением которой оперирует STRING. LFT, RHT, CENT Задает способ выравнивания текста в строке: влево, вправо или по центру соответственно. UPR, LWR, CAP Задает режим капитализации строки - верхний регистр, нижний регистр, первая буква заглавная. CLIP Указывает, что из строки надо удалять хвостовые пробелы. STRING описывает переменную отчета в позиции, заданной ROW или COL в структурах HEADER, DETAIL или FOOTER. Если не заданы ROW или COL, то STRING печатается в первом столбце справа от предыдущего поля. Если STRING имеет метку, то к ней можно обратиться, когда структура REPORT открыта или закрыта. Пример: CustRpt REPORT,PRINTER(PrinterType)!Отчет по покупателям CustDetail DETAIL,SEPARATE(1) ! начало описания DETAIL ROW(2,5) STRING(15),USE(FirstName),CLIP STRING(' ') STRING(1),USE(Initial) STRING('. ') STRING(15),USE(LastName) ROW(3,5) STRING(30),USE(Address) . ProdDetail DETAIL ROW(1) STRING('Товар:') !Печатаем строковую константу COL(10) STRING(@n3),USE(Itm:ProductNbr) COL(20) STRING(@n2),USE(Itm:Quantity) ExtPrice COL(34) STRING(12) !форматируется программой (?) . . TEXT (многострочное поле отчета) |LFT | |UPR| [метка] TEXT(rows,colomns)[,USE()][,|RHT |][,|LWR|][,|CLIP|] |CENT| |CAP| |WRAP| rows Сколько строк (максимум) печатать. s USE Задает переменную, со значением которой оперирует STRING. LFT, RHT, CENT Задает способ выравнивания текста в строке: влево, вправо или по центру соответственно. UPR, LWR, CAP Задает режим капитализации строки - верхний регистр, нижний регистр, первая буква заглавная. CLIP Указывает, что из строки надо удалять хвостовые пробелы. WRAP Разрешить перенос слов. Поле типа TEXT позволяет печатать многострочные тексты. ROWS задает максимальную высоту в строках, COLUMNS - ширину в столбцах. USE-перемене разделяются на сегменты по COLUMNS символов. Печатается до ROWS сегментов. Если сегментов меньше чем ROWS, то печатаются только сегменты, содержащие данные. Пример: CustRpt REPORT,PRINTER(PrinterType) !Отчет по покупателям ProdDetail DETAIL !Declare the detail line ROW(1) STRING('Product:') COL(10) STRING(@n3),USE(Itm:ProductNbr) COL(20) STRING(@n2),USE(Itm:Quantity) ExtPrice COL(34) STRING(12) ROW(2,5) TEXT(5,50),USE(Pro:Desc) ! 50 столбцов, до 5 строк . !End detail . !Конец описаний отчета АТРИБУТЫ ПОЛЕЙ CLIP (отсечь хвостовые пробелы) CLIP Атрибут CLIP удаляет из поля хвостовые пробелы. Пример: CustRpt REPORT CustDetail DETAIL,SEPARATE(l) ROW(2,5) STRING(15),USE(FirstName),CLIP !FirstName в стр.2 стлб.5 ! усекается и сразу за ним STRING(' ') ! идет один пробел STRING(1),USE(Initial) !Initial в следующем стлб. ! За ним идет точка и еще STRING('. ') ! один пробел STRING(15),USE(LastName) !LastName в следующем стлб. COL(45) STRING(@P(###)###-####P),USE(Phone) !Phone в стр.2 стлб.45 . . LFT, RHT, CENT (методы выравнивания полей) LFT RHT CENT LFT выравнивает влево, RHT - вправо, а CENT центрирует текст в поле. Эти атрибуты разрешены с полями типа STRING и TEXT. Пример: CustRpt REPORT Head HEADER,SEPARATE(1) ROW(2,25) STRING(30),USE(Company).CENT . !Центрировать название фирмы CustDetail DETAIL,SEPARATE(1) ROW(2,5) STRING(15),USE(FirstName),RHT !Имя выровнять вправо COL(22) STRING(1).USE(Initial) COL(24) STRING(15),USE(LastName),LFT !а фамилию - влево . . UPR, LWR, CAP (методы капитализации) UPR LWR CAP Поля типа STRING, TEXT или CONTROL с атрибутом UPR выводят все буквы заглавными. Атрибут LWR печатает все в нижнем регистре. Атрибут CAP выводит текст в формате ИМЕНИ первая буква каждого слова заглавная, а остальные - строчные. Пример: CustRpt REPORT Head HEADER,SEPARATE(1) ROW(2,25) STRING(30),USE(Company),CENT,UPR !заглавными ROW(3,25) STRING(30),USE(Motto),CENT,LWR !прописными . CustDetail DETAIL,SEPARATE(1) ROW(2,5) STRING(15).USE(FirstName),CAP !Как имя COL(22) STRING(l),USE(Initial),UPR!Заглавными COL(24) STRING(15),USE(LastName),CAP !Как имя ROW(3) STRING(30),USE(Address) . . USE (переменная, связанная с полем) USE(variable) variable Метка переменной. Атрибут USE задает переменную, значение которой передается в поля отчета STRING, TEXT или CONTROL. Когда оператором PRINT или при переполнении страницы, печатаются структуры HEADER, DETAIL, или FOOTER, значения USE-переменных печатаются в связанных с ними полях STRING, TEXT или CONTROL. Пример: CustRpt REPORT Head HEADER ROW(1,1) CONTROL(5),USE(Boldon) ROW(2,25) STRING(30),USE(Company),CENT,UPR !Заглавными ROW(3.1) CONTROL(5),USE(BoldOff) ROW(3,25) STRING(30).USE(Motto),CENT,LWR!Строчными . CustDetail DETAIL,SEPARATE(1) ROW(2,5) STRING(15),USE(FirstName) COL(22) STRING(1),USE(Initial) COL(24) STRING(15).USE(LastName) ROW(3) STRING(30),USE(Address) . ProdDetail DETAIL ROW(1) STRING('Product:') COL(10) STRING(@n3),USE(Itm:ProductNbr) COL(20) STRING(@n2),USE(Itm:Quantity) ExtPrice COL(34) STRING(12) ROW(2,5) TEXT(5,50),USE(Pro:Desc) . . !Конец описаний отчета WRAP (разрешить перенос слов) WRAP Атрибут WRAP разрешает перенос слов в полях типа TEXT. Перенос слов гарантирует, что слова, не вмещающиеся в текущую будут перенесены в начало следующей, для чего в конец текущей строки добавляются пробелы. Пример: CustRpt REPORT,PRINTER(PrinterType) ProdDetail DETAIL ROW(1) STRING('Product:') COL(10) STRING(@n3),USE(Itm:ProductNbr) COL(20) STRING(@n2),USE(Itm:Quantity) ExtPrice COL(34) STRING(12) ROW(2,5) TEXT(5,50),USE(Pro:Desc),WRAP !Разрешен перенос слов . . КОМАНДЫ ОТЧЕТА OPEN (открыть отчет для обработки) OPEN(report) report Метка структуры REPORT. OPEN активизирует структуру REPORT. Вы должны открыть отчет прежде, чем сможете напечатать какую-либо структуру типа HEADER, DETAIL или FOOTER. К переменным отчета (полям с метками) можно обращаться НЕзависимо от того, открыт отчет или нет. Пример: OPEN(CustRpt) !Открыть отчет CLOSE (закрыть текущий отчет) CLOSE(report) report Метка структуры REPORT. Оператор CLOSE печатает структуру FOOTER (если, конечно, последняя напечатанная структура DETAIL не имела атрибута ALONE), закрывает отчет и его выходной файл (если атрибут DEVICE указывал на файл). RETURN из процедуры, открывшей отчет, неявно вызывает CLOSE. Пример: CLOSE(CustRpt) !Закрыть отчет PRINT (напечатать элемент отчета) PRINT( |structure|) | string | structure Метка структуры HEADER, DETAIL или FOOTER. string Строковое выражение, переменная или символ управления принтером. Этот параметр игнорирует атрибут DEVICE и выводит строку на устройство PRN (LPT1). Оператор PRINT выводит элемент отчета на заданное атрибутом DEVICE устройство. PRINT автоматически увеличивает счетчики строк и страниц и вызывает, при необходимости, переполнение страницы. PRINT также может вывести строку непосредственно на LPT1. Пример: PRINT( 'Итого:'& FORMAT( Filetot @N10.2) & @LF) !Печатаем ИТОГО и ПС на LPT1 PRINT(@FF) !Выбросить лист (ПФ) из LPT1 PRINT(OrderDtl) !Вывести строку из счета на DEVICE См. также: Переполнение страницы, Шаблоны управляющих кодов принтера ROWS (количество строк) ROWS(structure) structure Метка структуры REPORT. Функция ROWS возвращает число строк, которые займет при печати тот или иной элемент отчета (HEADER, DETAIL или FOOTER). Результат НЕ включает в себя значение атрибута SEPARATE, но строки с атрибутом SUPPRESS учитываются. Возвращаемый тип данных: LONG Пример: IF Length - Line > ROWS(Detail) !Хватит ли места, чтобы распечатать ! Detail целиком? PRINT(Detail) ! если да, то печатаем ELSE ! если нет, то PRINT(Footer) ! сначала перейдем на новую страницу PRINT(Header) ! PRINT(Detail) ! а уже затем напечатаем Detail . Переполнение страницы Переполнение страницы происходит, когда PRINT не может разместить структуру DETAIL на странице или когда недостаточно места, чтобы после структуры DETAIL оставить столько места, сколько задано ее атрибутом ALLOW. Ниже описано, что происходит при ПЕРЕПОЛНЕНИИ СТРАНИЦЫ. Если есть FOOTER, то добавляются переводы строк так, чтобы FOOTER попал в самый низ страницы (согласно атрибуту LENGTH). Затем печатается собственно FOOTER. Счетчик страниц увеличивается, а счетчик строк сбрасывается в единицу. Если есть HEADER, то он печатается и счетчик строк увеличивается на число строк, занятых под FOOTER. Шаблоны управляющих кодов принтера @FF[n] Перевод листа (ПФ, Form feed, FF, ASCII 12) повторить n раз, затем выдать ВК. @LF[n] Перевод строки (ПС, Line feed, LF, ASCII 10) повторить n раз. @CR[n] Возврат каретки (ВК, Carriage return, ASCII 13) повторить n раз. n Целочисленная константа, задающая сколько раз повторить этот код. По умолчанию - один. Шаблоны управляющих кодов принтера представляют собой общие последовательности управления принтером. Аналогично шаблонам формата, шаблоны управления принтером начинаются со знака @. Эти шаблоны можно использовать совместно с оператором PRINT. Пример: PRINT(@LF3) ! 3 ПС PRINT(@CR4) ! 4 ВК PRINT(@FF) ! 1 ПФ Назад | Содержание | Вперед

  Citforum.ru приглашает вас посетить семинары:

25 марта 2003 года, Москва

ИТ-бюджетирование в банковских учреждениях. 26 марта 2003 года, Москва

Как анализировать эффективность ИТ банковских учреждений. Практический опыт проведения работ. 27 марта 2003 года, Москва

ИТ в банковских учреждениях. Разработка стратегии развития ИС. 19-21 марта 2003 года, Москва

26-28 марта 2003, Санкт-Петербург.

Теория и практика обеспечения безопасности информационных систем 17 апреля 2003 года, Москва

6 марта и 24 апреля 2003, Санкт-Петербург.

"Практическое применение международного стандарта безопасности информационных систем ISO 17799" 8 апреля 2003 года, Москва

3 апреля 2003, Санкт-Петербург.

"Обеспечение комплексной информационной безопасности предприятия" 10 апреля 2003 г., Москва.

14 апреля 2003 г., Санкт-Петербург

"Анализ рисков информационных систем компаний" Рекомендуем CD Domina Security: Управление информационными рисками корпоративных ИС Internet/Intranet Коммерческая тайна и экономическая безопасность бизнеса Применение стандарта безопасности ISO 17799

Новые поступления в разделе "Подробно о лучших книгах": Компьютерные системы передачи данных, Вильям Столлингс Качество обслуживания в сетях IP, Шринивас Вегешна Цифровая связь: теоретические основы и практическое применение, Скляр Б.

Аутентификация: от паролей до открытых ключей, Дж. Уинзор Энциклопедия SQL. 3-е изд+CD, Грофф Дж., Вайнберг П. Современные операционные системы. Изд.2, Э. Таненбаум

Поиск Рубрикатор Форумы Новости сервера Учебный центр Книжный магазин Реклама на сервере <<< В начало | Наверх Быстрый переход >>>   Internet-технологии  Сетевые технологии  Базы данных  Операционные системы  Программирование  Аппаратные платформы  Материалы конференций  Пользователям и преподавателям  Корпоративные ресурсы  Книги, которые мы выбираем   Комментарии: mailto:info@citforum.ru?Subject='From bottom of CIT FORUM' u="u266.74.spylog.com";d=document;nv=navigator;na=nv.appName;t="";p=1; sz=" width=88 height=31 "; hl=history.length;d.cookie="b=b";c=0; bv=Math.round(parseFloat(nv.appVersion)*100); if (d.cookie) c=1;n=(na.substring(0,2)=="Mi")?0:1; if((n==0)||(bv >= 300)){rn=Math.random();t=(new Date()).getTimezoneOffset();} else {rn=0;} z="p="+p+"&rn="+rn+"&t="+t+"&c="+c+"&hl="+hl; if (self != top) { fr=1;} else { fr=0;} r=escape(d.referrer);r1=""; sl="1.0";h=0; pl="";sl="1.1"; if((n==1) && (bv >= 300)) { for(var i = 0; i < nv.plugins.length; i++) pl += nv.plugins[i].name+":"; } j = (navigator.javaEnabled() ? "Y" : "N"); sl="1.2";s=screen;wh=s.width+'x'+s.height; px=(n==0)?screen.colorDepth:screen.pixelDepth;z+="&wh="+wh+"&px="+px; sl="1.3" y=""; y+=""; y+=""; y+=""; d.write(y); Copyright © Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.