Распечатать страницу

Команды для отчета и этикетки в Microsoft VFP

« Назад

Команда

CREATE REPORT | LABEL [FileName | ?] [NOWAIT] [SAVE]
                   [WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN

открывает проектировщик отчета (этикетки), для создания нового отчета (этикетки).

Параметр (см. также табл. 1.6)

FileName – файл создаваемого отчет (этикетки). По умолчанию имеет расширение FRX (LBX).

Команда

MODIFY REPORT | LABEL [FileName | ?] [[WINDOW WindowName1]
                   [IN [WINDOW] WindowName2 | IN SCREEN]]
                   [NOENVIRONMENT] [NOWAIT] [SAVE]

открывает проектировщик отчета (этикетки) для создания нового или редактирования существующего отчета (этикетки).

Параметр (описание опций см. в табл. 1.6):

FileName – файл отчета (этикетки).

Замечание. Смысл опции NOENVIRONMENT см. в описании команды MODIFY FORM.

Команда

REPORT FORM FileName1 | ? [ENVIRONMENT] [Scope] [FOR lExpression1]
                   [WHILE lExpression2] [NOOPTIMIZE] [RANGE nStartPage [, nEndPage]]
                   [HEADING cHeadingText] [SUMMARY] [NORESET] [PLAIN]
                   [NOCONSOLE | OFF] [PDSETUP]
                   [NAME ObjectName]
                   [OBJECT oReportListener | TYPE iExpression]
                   [TO PRINTER [PROMPT] [NOPAGEEJECT] [NODIALOG]
                   | TO FILE FileName2 [ASCII]]
                   [PREVIEW [[IN] WINDOW WindowName | IN SCREEN] [NOWAIT]]

отображает и/или печатает отчет, беря данные из таблицы и используя макет, хранящийся в файле FileName1.

Опции и параметры (см. также табл. 1.6 и 1.7):

ENVIRONMENT – опция включена для совместимости с версиями 2.x. Чтобы управлять окружением используйте свойства AutoOpenTables и AutoCloseTables объекта Data Environment.

RANGE nStartPage [, nEndPage] – указывает, что печатаются страницы начиная с номера nStartPage и кончая номером nEndPage или последней страницей, если nEndPage опущен или превышает число страниц отчета. Если параметр nEndPage опущен, то по умолчанию в качестве nEndPage берется число 32767. Опция не действует в режиме просмотра, если не использован объектно-поддерживаемый вывод путем задания oReportListener либо установки SET REPORTBEHAVIOR в 90. При объектно-поддерживаемом выводе диапазон печати регулируется свойствами PrintRangeFrom, PrintRangeTo (детали см. в справке VFP, описание метода OnPreviewClose объекта ReportListener).

HEADING cHeadingText – текст дополнительного заголовка, помещаемого на каждой странице отчета. Если опции HEADING и PLAIN заданы одновременно, то приоритет имеет опция PLAIN.

SUMMARY - подавляет вывод данных, предусмотренных полосой Detail. Печатаются только общие и промежуточные итоги.

NORESET – указывает, что системные переменные _PAGENO и _PAGETOTAL не восстанавливаются. Если NORESET и RANGE задаются совместно, то выводимый диапазон должен быть указан с учетом значения _PAGETOTAL.

PLAIN – указывает, что заголовок страницы появляется только в начале отчета.

NOCONSOLE | OFF – подавляет вывод данных в окно VFP во время печати отчета или передачи в файл. При использовании объекта oReportListener команда REPORT FORM не отображает отчет в текущем окне. В этом случае опция может быть использована для определения значения свойства NOCONSOLE объекта oReportListener (см. в справке описание свойств объекта ReportListener).

[PDSETUP] – загружает установки драйвера принтера. Опция используется для печати текстовых отчетов, созданных в FoxPro для MS-DOS. В графических отчетах (такие отчеты создаются в VFP) опция игнорируется.

NAME ObjectName – имя переменной типа Object, хранящей ссылку на объект Data Environment отчета. Если опция не задана, то в качестве ObjectName используется имя отчета. Параметр ObjectName обеспечивает доступ к свойствам, событиям и методам объекта Data Environment отчета на этапе выполнения.

OBJECT oReportListener | TYPE iExpression – включает режим объектно-поддерживаемого вывода. Используется либо ссылка на объект класса ReportListener, либо числовое значение iExpression, задающее тип вывода. Опция OBJECT имеет приоритет над установкой команды SET REPORTBEHAVIOR. Детали см. в справке VFP, тема ReportListener object.

TO PRINTER [PROMPT] [NOPAGEEJECT] [NODIALOG] – посылает отчет на принтер. Опция PROMPT обеспечивает появления диалога выбора принтера. Опция NODIALOG отменяет появление диалога, отображаемого во время печати отчета. Опция NOPAGEEJECT – указывает, что в конце отчета бумага остается в принтере, сеанс печати не завершается и следующий печатаемый отчет добавляется в этот сеанс. Опция может быть использована для организации печати на обратной стороне бумаги. Также можно вывести несколько отчетов со сквозной нумерацией страниц, что характерно при работе с факсами.

Замечание. Последний выводимый отчет не должен иметь опции NOPAGEEJECT, чтобы обеспечить завершение сеанса печати. Опция не имеет эффекта в командном окне, а действует только в программах.

TO FILE FileName2 [ASCII] – направляет отчет в файл FileName2. По умолчанию для FileName2 берется  расширение TXT. При выводе в файл используется драйвер текущего принтера.

Если задана опция ASCII, то в файл направляется имеющийся в отчете текст. Без этой опции или если используется объектно-поддерживаемые вывод в файл записываются PostScript и другие коды принтера, отображающие состав отчета. Чтобы создать ASCII-текстовый файл нужно одновременно использовать SET REPORTBEHAVIOR 80 и опцию ASCII.

Число колонок и строк на каждой странице ASCII-файла определяется соответственно значениями системных переменных _ASCIICOLS и _ASCIIROWS.

Замечание. Для печати созданного файла FileName2 можно употребить команду TYPE.

PREVIEW [[IN] WINDOW WindowName | IN SCREEN] – отображает отчет в режиме просмотра в окне WindowName (если задана опция WINDOW). При задании опции IN SCREEN окно просмотра содержится в главном окне VFP и не может быть перемещено за его пределы.

В распространяемых приложениях следует оставлять меню View, поскольку если панель инструментов Print Preview окажется закрытой, то ее можно восстановить только средствами меню View.

Пример 1 (приводится в справке VFP). Первые две команды REPORT FORM употребляются для вычисления общего числа страниц в 2-х отчетах. Этому способствует опция NORESET. Процесс завершается быстро, поскольку задана опция NOCONSOLE.

Общее число страниц заносится в переменную lcPageTotal, которая затем может быть использована в отчете для информирования об общем числе страниц, например:

"Страница " + Transform(_PAGENO) + " из " + lcPageTotal

Вторая пара команд REPORT FORM обеспечивает вывод 2-х отчетов на принтер в одном сеансе печати.

lcPageTotal = ""

report form myReport1.frx noconsole nopageeject

report form myReport2.frx noconsole noreset

lcPageTotal = Transform(_PAGETOTAL)

report form myReport1.frx to printer nopageeject

report form myReport2.frx to printer noreset

Пример 2. Отчет направляется на принтер. Результат предварительно просматривается.

report form myReport1.frx to printer prompt nodialog preview

Команда

SET REPORTBEHAVIOR 80 | 90

задает, как VFP выполняет команды REPORT FORM и LABEL FORM.

Параметры:

80 – (по умолчанию) указывает, что вывод отчетов и этикеток выполняется с использованием технологии VFP версии 8.0 и ниже.

90 – указывает, что вывод отчетов будет выполняться приложением, заданным системной переменной _REPORTOUTPUT и позволяющим получить экземпляр класса ReportListener и употребить его для управления выводом.

Установка команды учитывается проектировщиками отчета и этикетки: они используют объект ReportListener при выполнении просмотра отчета (Print Preview).

Установка команды имеет глобальную область действия.

Команда

LABEL [FORM FileName1 | FORM ?] [ENVIRONMENT] [Scope]
                   [FOR lExpression1] [WHILE lExpression2] [NOOPTIMIZE]
                   [NOCONSOLE | OFF] [SAMPLE] [PDSETUP]
                   [NAME ObjectName]
                   [OBJECT oReportListener | TYPE iExpression]
                   [TO PRINTER [PROMPT] | TO FILE FileName2]
                   [PREVIEW [[IN] WINDOW WindowName | IN SCREEN]
                            [NOWAIT] [WINDOW WindowName]]

отображает и/или печатает этикетки, беря данные из таблицы и используя макет, хранящийся в файле FileName1.

Опции и параметр:

[SAMPLE] – позволяет, если используется созданный в FoxPro для MS-DOS текстовый отчет, проверить выравнивание этикеток. Опция игнорируется для графических этикетов.

WINDOW <WindowName> - указывает, что окно просмотра будет иметь характеристики, заданные для окна WindowName. Имя WindowName может быть свойством Name формы или именем окна, созданного командой DEFINE WINDOW.

Прочие опции и параметры см. в описании команды REPORT FORM и в табл. 1.6 и 1.7.

Команда LABEL, выполненная без опций, откроет диалог Open.

Системная переменная

_ASCIICOLS = nExpression.

задает число колонок nExpression в тексте, создаваемом командой REPORT ... TO FILE ASCII. Значение по умолчанию – 80.

Системная переменная

_ASCIIROWS = nExpression

задает число строк nExpression в тексте, создаваемом командой REPORT ... TO FILE ASCII. Значение по умолчанию – 63.

Системная переменная

_PAGENO = nCurrentPageNumber

содержит номер текущей страницы nCurrentPageNumber – число от 1 до 32,767. По умолчанию начальное значение равно 1.

Работает синхронно с системными переменными _PBPAGE и _PEPAGE, задающими диапазон печати. Если _PAGENO получит значение вне диапазона, заданного _PBPAGE и _PEPAGE, то страница не печатается.

Системная переменная

_PAGETOTAL [= nValue]

содержит общее число страниц в отчете.

Значение _PAGETOTAL обновляется при выполнении команды REPORT FORM. По умолчанию после вывода отчета _PAGETOTAL устанавливается в 0.

Если отчет содержит имя системной переменной _PAGETOTAL, то он выполняется за 2 прохода. Во время первого, невидимого, вычисляется значение _PAGETOTAL.

Чтобы избежать вывода _PAGETOTAL во время просмотра, можно употребить функцию SYS(2040), например:

"Страница " + Trans(_PAGENO) + Iif(Sys(2040) = "1", "", " из " + Trans(_PAGETOTAL))

Принудительно 2 прохода можно организовать, включив в отчет, например, такое выражение:

Iif(_PAGETOTAL = 0, "", "")

Во время второго прохода известное значение _PAGETOTAL можно использовать для вывода дополнительной информации, например:

"Страница " + Transform(_PAGENO) + " из " + Transform(_PAGETOTAL)

Функция

SYS(2040)

определяет, печатается ли отчет или находится в режиме просмотра.

Тип результата Character. Возвращает один из следующих символов:

  • 0 – нет активного отчета;

  • 1 – отчет находится в режиме просмотра;

  • 2 – отчет выводится на принтер или в файл.

Пример см. в описании системной переменной _PAGETOTAL.