Выводит на экран или на печать отчет, указанный в файле определения отчета (.frx), например, созданный командами CREATE REPORT или MODIFY REPORT .

Команда REPORT FORM может интерпретировать файлы этикетки Visual FoxPro (lbx формат) так же как файлы отчета. Вы можете также использовать REPORT FORM для выполнения файлов текстовых отчетов, созданных в FoxPro для MS-DOS.

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 OutputDestination [NODIALOG]]
[PREVIEW [PreviewDestination] [NOWAIT] [WINDOW WindowName]]

Параметры

FileName1 |?

Определяют имя файла определения отчета (.frx) или отображает диалоговое окно Open, так чтобы Вы могли выбрать файл .frx. По умолчанию, отчет отображается в текущем окне вывода.
Обратите внимание:
Заданное по умолчанию расширение имени файла для файла определения отчета - .frx. Если файл .frx не находится в основном каталоге или папке, Вы должны включить путь вместе с именем файла. Начиная с Visual FoxPro 7.0, FileName1 включен в статусное сообщение, которое появляется, когда Вы включаете предложение TO . Для подавления вывода статусного сообщения, см. описание предложения TO .

[ENVIRONMENT]

Открывает и восстанавливает все таблицы и отношения в окружении данных, связанном с отчетом, даже когда AutoOpenTables установлено в Ложь (.F)..
Обратите внимание:
Ключевое слово ENVIRONMENT включено для обратной совместимости, например, для отчетов, конвертированных из более ранних версий FoxPro, типа отчетов 2. x .

Чтобы восстановить окружение данных, связанное с отчетом Visual FoxPro, установите свойство окружения данных AutoOpenTables в Истину (.T). (значение по умолчанию). Чтобы быть уверенным, что окружение данных отчета закроется после окончания печати, установите свойство окружения данных AutoCloseTables в Истину (.T). (значение по умолчанию). Для подробной информации, см. AutoOpenTables Свойство и AutoCloseTables Свойство .
[ Scope ]

Определяет диапазон записей для включения в отчет. Только записи, попадающие в границы диапазона включаются в отчет.
Обратите внимание:
Когда Вы включаете предложение Scope , scope работает только для таблицы в активной рабочей области.

Следующая таблица перечисляет возможные значения для Scope .

Scope Описание

ALL

Включает все записи. (Значение по умолчанию)

NEXT nRecords

Включает следующее количество записей nRecords , начинающихся с текущей записи.

RECORD nRecordNumber

Включает только указанную запись.

REST

Включает диапазон записей, начинающихся с текущей записи и заканчивающийся последней записью.

Для подробной информации относительно предложений scope, см. Scope Clauses .
[FOR lExpression1 ]

Печатает данные только тех записей, для которых логическое выражение, указанное lExpression1 равно истине (.T).. Включением предложения FOR , Вы можете исключить записи, которые Вы не хотите печатать.
Совет:
Если lExpression1 является оптимизируемым выражением, Rushmore оптимизирует REPORT FORM с помощью предложения FOR . Для более выстрого выполнения, используйте оптимизируемое выражение в предложении FOR . Для подробной информации, см. SET OPTIMIZE и Использование Rushmore Query Optimization для ускорения доступа к данным .

[WHILE lExpression2 ]

Выводит данные на печать только, если логическое выражение, указанное lExpression2 равно Истине (.T)..
[NOOPTIMIZE]

Предотвращает оптимизацию Rushmore для REPORT FORM . Для подробной информации, см. SET OPTIMIZE и Использование Rushmore Query Optimization для ускорения доступа к данным .
[RANGE nStartPage [, nEndPage ]]

Определяет диапазон страниц для вывода на печать или другого вывода. Параметр nStartPage определяет первую страницу для печати, в то время как параметр nEndPage определяет последнюю страницу для печати. Если nEndPage опущен, то последней страницей для печати является по умолчанию 32,767.
Обратите внимание:
RANGE отбирает страницы для вывода, в то время как предложения scope, предложения FOR , и WHILE отбирают записи. Эти критерии отбора не действуют, если Вы выбираете печать из окна предварительного просмотра, и если Вы не определили объектно-ассистированный режим используя предложение OBJECT или SET REPORTBEHAVIOR 90 . В объектно-ассистированном режиме, Вы можете печатать или в полном объеме RANGE , который Вы определили в первоначальной команде REPORT FORM или в объеме некоторого подмножества данного диапазона страниц, используя члены-объекты ReportListener.CommandClauses PrintPageCurrent, PrintRangeFrom и PrintRangeTo. Для подробной информации, см. OnPreviewClose Метод .

[HEADING cHeadingText ]

Определяет текст для размещения в качестве дополнительного заголовока на каждой странице отчета. Если Вы включаете предложение HEADING и ключевое слово PLAIN , то ключевое слово PLAIN имеет приоритет.
[SUMMARY]

Подавляет печать строк содержания так, чтобы печатались только общие и промежуточные суммы.
[NORESET]

Определяет что системные переменные _PAGENO и _PAGETOTAL не будут обнуляться. Номер страницы для текущего отчета начинается с текущих значений этих двух переменных. Для подробной информации, см. _PAGENO Системная Переменная и _PAGETOTAL Системная Переменная .
Обратите внимание:
Если Вы используете ключевые слова NORESET и RANGE вместе, Вы должны оценить заранее какие страницы печатать.

[PLAIN]

Подавляет заголовки страниц кроме того, который находится в начале отчета.
[NOCONSOLE | OFF]

Подавляет отображение отчета в главном окне Visual FoxPro или определяемом пользователем окне при печати отчета или выводе его в файл.
Обратите внимание:
Когда Вы используете объектно-ассистированный режим вывода Visual FoxPro 9.0, REPORT FORM не отображает содержание вашего отчета в окне текущего вывода, поэтому ключевые слова NOCONSOLE и OFF не оказывают вляния на штатное поведение. Однако, ключевые слова доступны в объекте ReportListener.CommandClauses. Вы можете вычислить их значение в ваших классах, производных от ReportListener, и принять решение подавить вывод содержания отчета или другой пользовательской обратной связи, основанное на их содержании. Для подробной информации, см. CommandClauses Свойство .

[PDSETUP]

Загружает установку драйвера принтера. Вы можете включить PDSETUP для использования установки драйвера принтера для печати текстовых отчетов, созданных в FoxPro для MS-DOS. PDSETUP игнорируется, когда Вы печатаете отчеты на основе графики, созданные в Visual FoxPro.
[NAME ObjectName ]

Определяет объектное имя переменной для окружения данных, связанных с отчетом.
Обратите внимание:
Окружение данных и объекты окружения данных имеют свойства и методы, типа метода AddObject , которые должны будут определяться или вызываться в run time. Объектная переменная обеспечивает доступ к этим свойствам и методам.

Если Вы опускаете предложение NAME , то по умолчанию, Visual FoxPro для ссылок в коде, связанном с событиями, будет использовать имя файла отчета.
[OBJECT oReportListener | TYPE iExpression ]

Вызывает объектно-ассистированный режим вывода Visual FoxPro. Используйте или объектную ссылку к объекту, производному базового класса ReportListener, или числовое значение, определяющее тип вывода. Предложение OBJECT в индивидуальной команде REPORT FORM имеет приоритет над текущей установкой SET REPORTBEHAVIOR . Для подробной информации, см. ReportListener Объект , ListenerType Свойство , и OutputType Свойство (Visual FoxPro) .
[TO OutputDestination [NODIALOG]]

Определяет адресат вывода для отчета. Чтобы подавлять статусные сообщения, которые появляются в run time, включите ключевое слово NODIALOG .
Обратите внимание:
В режиме вывода output-assisted, NODIALOG устанавливает свойство объекта ReportListener QuietMode в .T. для продолжения выполнения отчета. Для подробной информации, см. QuietMode Свойство .

Следующая таблица описывает возможные значения OutputDestination .

OutputDestination Описание

[PRINTER [PROMPT] [NOPAGEEJECT] [NOEJECT]]

Посылает отчет на принтер.

Чтобы вывести диалоговое окно Print перед началом печати, включите ключевое слово PROMPT . В режиме object-assisted, опции, разрешенные в диалоговом окне Print будут зависеть от значения члена ReportListener.CommandClauses.PrintPageCurrent.

Чтобы определить, что Visual FoxPro не будет осуществлять прогон листа в конце отчета, и оставит открытым задание на печать, включите ключевое слово NOPAGEEJECT . Следующий напечатанный отчет добавляется к уже открытому заданию по выводу на печать.

Вы должны быть уверены, что последний выполненный отчет не имеет предложения NOPAGEEJECT так, чтобы задание на печать могло бы быть закрыто.

NOPAGEEJECT является допустимым только во время выполнения программы. Оно игнорируется при выполнении из окна Command. Изменение ориентации страниц, например landscape на portrait, между отчетами не поддерживается.

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

Команда REPORT FORM также разрешает применять ключевое слово NOEJECT , которое Visual FoxPro больше не поддерживает, но которое использовалось в старших версиях FoxPro и FoxBASE+ для DOS. Это ключевое слово не выполняет никакой функции, но и не вызывает ошибки.

[FILE] FileName2 [[ADDITIVE] ASCII]

Определяет имя текстового файла, в который нужно послать отчет. Заданное по умолчанию расширение имени файла для созданного файла - .txt.

Когда Вы опускаете ключевое слово ASCII или используете режим вывода Visual FoxPro object-assisted, пишите коды PostScript или другие коды принтера в текстовый файл вместе с содержанием вашего отчета. Для создания текстового файла ASCII из файла определения отчета, установите SET REPORTBEHAVIOR 80 и включите ключевое слово ASCII .

Обратите внимание:
Когда Вы включаете ключевое слово ASCII , Вы можете обработать отчет на компьютере, в котором нет установленных принтерных драйверов. Без ключевого слова ASCII , команда REPORT FORM запущенная на компьютере, который не имеет установленного драйвера принтера, генерирует ошибку.

ASCII файл содержит только текст. Если текстовый отчет, создается в FoxPro для MS-DOS, то для изображения линий и фигур могут применяться черточки и знаки "плюс". Любые настройки шрифта или цвета, графика, линии, прямоугольники, или округленные прямоугольники в файле определения отчета не появляются в текстовом файле ASCII. Вы можете определить число символов, чтобы разместить в каждой строке, и количество строк, чтобы разместить в каждой странице, используя системные переменые _ASCIICOLS и _ASCIIROWS . Значения по умолчанию для этих системных переменных соответствуют стандартной странице portrait. Для подробной информации, см. _ASCIICOLS Системная Переменная и _ASCIIROWS Системная Переменная .

Для добавления в конец файла ASCII нового содержания вместо его перезаписывания, поместите перед ключевым словом ASCII ключевое слово ADDITIVE . Ключевые слова ADDITIVE и ASCII должны быть определены в указанном порядке.

[PREVIEW [ PreviewDestination ] [NOWAIT][WINDOW WindowName ]]

Отображает отчет в окне предварительного просмотра вместо того, чтобы его напечатать. По умолчанию, окно предварительного просмотра является модальным, но обеспечивает доступ к инструментальной панели Print Preview. Ключевое слово NOWAIT определяет, что Visual FoxPro в run time не ожидает закрытия окна предварительного просмотра перед продолжением выполнения программы.
Совет:
Текстовые отчеты и этикетки, созданные в FoxPro MS-DOS имеют специальное окно предварительного просмотра. На этот механизм не влияет SET REPORTBEHAVIOR и он не поддерживает предложение OBJECT или связанные с WINDOW предложения.

Если Вы включаете WINDOW < WindowName >, то окно предварительного просмотра перенимает характеристики окна, например заголовок, размер и так далее, которое Вы определяете с помощью WindowName . WindowName может быть свойством имени формы, или оно может быть переменной, ссылающейся на окно, созданное DEFINE WINDOW . Для подробной информации, см. DEFINE WINDOW Команда . Следующая таблица описывает возможные значения для PreviewDestination . Вы можете использовать предложение WINDOW изолированно, или же в комбинации с PreviewDestination .

PreviewDestination Описание

[IN WINDOW WindowName ]

Определяет окно для предварительного просмотра отчета.

Если Вы включаете IN WINDOW < WindowName >, отчет будет предварительно просмотрен в окне, которое Вы определяете WindowName .

IN SCREEN

Определяет, что предварительный просмотр осуществляется в главном окне Visual FoxPro и не может быть перемещен за его пределы.

Замечания

Когда Вы используете режим вывода Visual FoxPro object-assisted , все предложения команды REPORT FORM доступны вашему ReportListener в его члене-объекте CommandClauses, за исключением предложений отбора записей (scope, FOR , и WHILE ). Вы можете использовать атрибут CommandClauses.RecordTotal для информации о диапазоне выполнения отчета, или присваивать эти значения вашему объекту ReportListener перед выполнением вашего отчета. Тема Свойство CommandClauses Property даст Вам подробную информацию о том, как каждое предложение представлено в члене-объекте CommandClauses.

Примеры

Пример 1

Следующий пример показывает, как выполнить пакетное задание по выводу на печать отчетов, сотоящее из двух отчетов. Visual FoxPro выполняет двойной проход отчетов, чтобы получить полное число страниц, которое сохраняется в системной переменной _PAGETOTAL для того, чтобы позволить применить выражение "Page X of Y" в оформлении отчета.

Обратите внимание:
Вы можете гарантировать, что проход отчета выполняется дважды включением _PAGETOTAL в выражениях вашего отчета. Если Вы не нуждаетесь в _PAGETOTAL, но хотели бы, чтобы для других вычислений осуществлялось два прохода, можете использовать режим вывода object-assisted и устанавливать свойство ReportListener TwoPassProcess в .T. . Для подробной информации, см. TwoPassProcess Свойство .

NORESET определяет, что печать номеров страниц переносится на следующий отчет. NOPAGEEJECT определяет, что первая страница второго отчета продолжает печататься на обратной стороне последней страницы первого отчета.

Скопировать код
REPORT FORM myReport1.frx TO PRINTER NOPAGEEJECT
REPORT FORM myReport2.frx TO PRINTER NORESET
MESSAGEBOX("You printed " + ;
TRANSFORM(_PAGETOTAL)+" pages.")

Example2

Следующий пример показывает, как Вы можете осуществить предварительный просмотр перед направлением отчета на принтер.

Скопировать код
REPORT FORM myReport1.frx TO PRINTER PROMPT NODIALOG PREVIEW

Чтобы сделать окно предварительного просмотра немодальным, следующий код включает ключевое слово NOWAIT :

Скопировать код
REPORT FORM myReport1.frx PREVIEW NOWAIT

Чтобы предварительно просматривать результаты в указанном окне, следующий код включает предложение WINDOW , чтобы задать окно по имени MyWindow, которое Вы предварительно создали командой DEFINE WINDOW :

Скопировать код
REPORT FORM myReport1.frx PREVIEW WINDOW MyWindow

Пример 3

Следующий пример показывает, как направить отчет в ASCII файл. Системные переменные _ASCIIROWS и _ASCIICOLS определяют количество строк и символов в строке на ASCII странице. Команда REPORT FORM печатает отчет MyReport.frx в файл ASCII MyFile.txt.

Скопировать код
SET REPORTBEHAVIOR 80
_ASCIIROWS = nLines
_ASCIICOLS = nChars
REPORT FORM MyReport.frx TO FILE MyFile.txt ASCII

См. Также