- •Microsoft Visual FoxPro. Учебно-справочное пособие
- •Предисловие
- •Возможные значения type
- •1. Соглашения
- •1.1. Имена
- •1.1.1. Имена в тексте и комментарии
- •1.1.2. Имена в программе
- •1.1.3. Рекомендуемые имена
- •1.1.3.1. Переменные
- •Возможные значения scope
- •1.1.3.2. Поля таблиц
- •Возможные значения type
- •1.1.3.3. Объекты
- •Возможные значения prefix
- •1.1.3.4. Константы и окна
- •1.2. Команды, функции и объекты
- •1.2.1. Способ представления
- •1.2.2. Синтаксис команд и функций
- •1.2.3. Параметры команд и функций
- •Возможные значения type
- •1.3. Примеры
- •1.4. Структура пособия и поиск материала
- •1.5. Часто употребляемые опции и параметры
- •Общие опции команд, оперирующих диалогами и файлами
- •Общие опции команд, оперирующих таблицами
- •2. Простое приложение
- •2.1. Назначение и состав приложения
- •2.2. База данных и проект HomeLibrary
- •Поля таблиц базы данных HomeLibrary
- •Индексы таблиц базы данных HomeLibrary
- •2.3. Связи между таблицами
- •2.4. Триггеры и правило проверки записи
- •2.5. Файлы проекта
- •2.5.1. Перечень файлов и порядок их описания
- •Файлы приложения HomeLibrary
- •2.5.2. Главный файл проекта
- •2.5.3. Форма "Авторы"
- •2.5.3.1. Состав формы
- •Элементы управления формы "Авторы"
- •2.5.3.2. Добавленные свойства формы
- •2.5.3.3. Обработчики событий формы и ее элементов
- •Действия кнопок формы
- •2.5.4. Форма AuthorEdit
- •2.5.4.1. Обработчик события Init
- •2.5.4.2. Запись данных на диск
- •2.5.4.3. Ввод даты
- •2.5.4.4. Альтернативный вариант ввода и записи данных
- •2.5.5. Форма "Книги"
- •2.5.6. Форма BookEdit
- •2.5.7. Форма "Содержание книг"
- •2.5.8. Форма WorkEdit
- •2.5.9. Форма "Виды произведений"
- •2.5.10. Анализ ошибки 1995
- •2.5.11. Отображение пометки удаления
- •2.5.12. Упаковка таблиц
- •2.5.13. Меню приложения
- •3. Типы данных
- •3.1. Общие сведения
- •3.1.1. Перечень функций
- •Список функций
- •3.1.2. Перечень типов данных
- •Типы данных vfp
- •Типы данных vfp, употребляемые только для полей таблиц
- •3.1.3. Получение информации о типе данных
- •Символ, возвращаемый type( ) и vartype( )
- •3.1.4. Null-величины
- •3.1.4.1. Понятие null
- •3.1.4.2. Функции и команда для null
- •3.1.4.3. Null в логических выражениях
- •Null в логических выражениях
- •3.1.4.4. Null в командах и встроенных функциях vfp
- •3.1.5. Пустые значения
- •Пустые значения
- •3.1.6. Чистые значения
- •Чистые значения
- •3.1.7. Преобразование типов данных
- •Значения параметра cDataType и флаги присутствия параметров nFieldWidth и nPrecision
- •Возможные преобразования типов данных, выполняемые cast( )
- •3.2. Числовые типы данных
- •3.2.1. Перечень команд
- •Список команд для числовых данных
- •3.2.2. Числовые константы
- •3.2.3. Операции для числовых данных
- •Операции для числовых данных
- •3.2.4. Преобразование числовых данных
- •3.2.5. Форматирование числовых данных
- •3.2.6. Функции для числовых данных
- •Функции для числовых данных
- •3.2.7. Вычисления в таблицах
- •Опции и параметры команд, выполняющих вычисления в таблицах
- •Функции, употребляемые в eExpressionList команды calculate
- •Данные таблицы Test.Dbf
- •3.3. Битовые функции
- •Результаты битовых операций
- •Битовые функции
- •3.4. Тип данных Currency
- •3.4.1. Перечень команд и функций
- •Список команд и функций
- •3.4.2. Употребление типа Currency
- •3.5. Логический тип данных
- •3.5.1. Логические операции
- •Логические операции
- •3.5.2. Операции отношения
- •Операции отношения
- •3.6. Приоритет выполнения операций
- •3.7. Типы данных Character и Varbinary. Кодовые страницы
- •3.7.1. Перечень команд
- •Список команд для символьных данных и кодовых страниц
- •3.7.2. Символьные константы
- •3.7.3. Операции для символьных данных
- •3.7.4. Команды для символьных данных
- •Примеры влияния set exact на результат сравнения
- •3.7.5. Функции для символьных данных
- •Символьные функции
- •Описание параметра nConversionSetting
- •Описание параметра nFlag
- •Описание параметра nFlag
- •Преобразования transform( ) при опущенном cFormatCodes
- •3.7.6. Кодовые страницы, поддерживаемые vfp
- •Кодовые страницы
- •3.7.7. Команды и функции для кодовых страниц
- •Функции для кодовых страниц
- •3.7.8. Тип данных Varbinary
- •3.7.9. Типы данных Varchar и Varchar (Binary)
- •3.8. Работа с полями типа Memo
- •3.8.1. Перечень команд и функций
- •Список команд и функция для memo-полей
- •3.8.2. Интеактивное редактирование memo-поля
- •3.8.3. Функции для memo-полей
- •3.9. Дата и время
- •3.9.1. Перечень команд и функций
- •Список команд и функций
- •3.9.2. Задание даты и времени
- •3.9.3. Изменение представления даты и времени
- •3.9.4. Константы, задающие дату и время
- •3.9.5. Даты по григорианскому и юлианскому календарям
- •3.9.6. Операции для данных типа Date и DateTime
- •3.9.7. Команды для данных типа Date и DateTime
- •Установки set date и соответствующие им форматы представления дат и дат и времени
- •3.9.8. Функции для данных типа Date и DateTime
- •Встроенные функции для данных типа Date и DateTime
- •3.9.9. Вывод системных календаря и часов
- •3.9.9.1. Вывод системных часов
- •3.9.9.2. Вывод системного календаря
- •3.9.10. Использование ole-календаря
- •4. Вывод данных в окно vfp, текстовый файл, на принтер и в порт
- •4.1. Перечень команд, функций и системных переменных
- •Список команд, функций и системных переменных
- •4.1.1. Слияние текста и его выражений
- •Значения параметра eExpression
- •4.1.2. Управление выводом
- •4.1.2.1. Организация вывода на принтер
- •4.1.2.2. Команды и функции, управляющие выводом
- •Символы, входящие в cFontStyle
- •Значения параметра nAttribute
- •Функциональные коды
- •Картинные коды
- •4.2. Вывод сообщений
- •Значения, применяемые для задания nDialogBoxType
- •Возвращаемые значения
- •Кнопки диалога и их действия
- •Варианты получения дополнительных данных о set-команде
- •4.3. Команды display и list
- •Display-команды
- •Опции и параметры display-команд
- •4.4. РАбота с текстовыми файлами
- •Функции для работы с текстовыми файлами
- •5. Элементы программирования
- •5.1. Перечень команд, функций и директив
- •Список команд, функций и директив
- •5.2. Основная программа
- •5.3. Структура программы
- •5.4. Вложенные вызовы программ
- •5.5. Создание констант и переменных
- •5.5.1. Константы
- •5.5.2. Переменные
- •5.5.2.1. Виды переменных
- •5.5.2.2. Имя переменной
- •5.5.2.3. Локальные переменные
- •5.5.2.4. Глобальные переменные
- •5.5.2.5. Частные переменные
- •5.5.2.6. Инициализация переменных
- •Ограничения на скалярные переменные и массивы
- •5.5.2.7. Освобождение переменных
- •5.5.2.8. Сохранение и восстановление значений переменных
- •5.6. Выражения
- •5.6.1. Построение и вычисление выражения
- •5.6.2. Оценка выражения
- •5.7. Управляющие конструкции
- •5.8. Процедуры и функции
- •5.8.1. Способы употребления
- •5.8.2. Обмен данными между программными компонентами
- •5.8.3. Число переданных параметров
- •5.8.4. Передача параметров по значению и ссылке
- •5.8.5. Поиск программных компонентов
- •5.8.6. Компиляция исходного текста
- •Расширения исходных и объектных файлов
- •5.8.7. Команды для процедур и функций
- •5.8.7.1. Задание и редактирование программных компонентов
- •Результаты, возвращаемые EditSource( )
- •Редакторы, открываемые функцией EditSource( )
- •5.8.7.2. Вызов Внешних функций
- •Возможные значения параметров cFunctionType и cParameterType1
- •5.8.7.3. Запуск программных компонентов
- •Имена для параметра KeyLabelName
- •Значения параметра cOnCommand
- •5.9. Макросы
- •5.9.1. Понятие макроса
- •5.9.2. Интерактивное формирование макроса
- •5.9.2.1. Запись макроса
- •5.9.2.2. Программирование макроса
- •5.9.3. Команды для макросов
- •6. Массивы
- •6.1. Перечень команд и функций
- •Список команд и функций для массивов
- •6.1.2. Создание и присваивание массива
- •6.1.3. Создание массива
- •Значения cType и варианты преобразования типа, заданного cType
- •6.1.4. Массив как параметр программных компонентов
- •6.1.5. Функции для массивов
- •Содержимое строки массива, формируемого adir( )
- •Содержимое строки массива, формируемого adockstate( )
- •Состав массива arrayDockState
- •Значения элементов массива ArrayName, созданного aerror( )
- •Элементы массива ArrayName, когда второй параметр равен 0
- •Элементы массива ArrayName, когда второй параметр равен 1
- •Содержимое строки массива ArrayName, когда задан параметр oEventObject
- •Содержимое строки массива, формируемого afields( )
- •Значения параметра nType и варианты возвращаемых результатов
- •Значения параметра nFlags
- •Информация об объекте vFunc
- •Состав массива ArrayName
- •Состав массива ArrayName для разных объектов проектирования
- •Значения параметра nValue
- •Действие параметра nType
- •Биты параметра nFlags
- •Условия поиска, задаваемые параметром nFlags
- •Элементы строки массива, формируемого astackinfo( )
- •Состав строки массива, формируемого ataginfo( )
- •Состав строки массива, формируемого avcxclasses( )
- •6.1. Отображение массива в форме
- •6.2.1. Решаемые задачи
- •6.2.2. Элементы управления формы
- •Элементы управления формы ArrayShow
- •6.2.3. Свойства и событие Init формы
- •Новое и измененные свойства формы
- •6.2.4. Поле списка формы
- •6.2.5. Кнопки формы
- •6.2.6. Счетчик и переключатели формы
- •6.2.7. Надписи формы
- •6.2.8. Массив как параметр формы
- •7. Обработка ошибок исполнения
- •7.1. Перечень команд и функций
- •Список команд и функций
- •7.2. Виды обработчиков ошибок
- •Значения, возвращаемые функцией sys(2410)
- •7.3. On error-обработчик ошибок
- •Функции для локализации и расшифровки ошибки
- •Команды cancel, resume, retry, return и suspend
- •7.4. Обработчик события Error
- •7.5. Конструкция try ... Catch ... Finally
- •7.5.1. Синтаксис и порядок выполнения конструкции
- •7.5.2. Дополнительные команды конструкции
- •7.5.3. Throw в try-конструкции
- •7.5.4. Итоговые замечания
- •7.6. Взаимодействие обработчиков
- •7.7. Генерация ошибок vfp
- •8. Оптимизация функционирования
- •8.1. Перечень команд и функций
- •Список команд и функций
- •8.2. Рашмор-оптимизация
- •8.2.1. Бинарный поиск
- •8.2.2. Сравнение последовательного и бинарного поиска
- •8.2.3. Использование индексов для оптимизации вычислений
- •8.2.4. Потенциально оптимизируемые Команды
- •8.2.5. Управление рашмор-оптимизацией
- •Уровни рашмор-оптимизации запроса
- •8.2.6. Оптимизация выражений
- •8.2.7. Составление оптимизируемых выражений
- •Варианты рашмор-выражений
- •8.3. Оптимизация программ
- •8.3.1. Некоторые приемы программирования
- •8.3.2. Оптимизация повторных обращений к свойствам объектов
- •8.3.3. Обращение к нескольким свойствам объекта
- •9. Проект
- •9.1. Перечень Команд и объектов
- •Список команд и объектов, употребляемых с проектом
- •9.2. Проект и диспетчер проекта
- •9.3. Проект как объект vfp
- •9.4. Создание и редактирование проекта
- •9.5. Включаемые и не включаемые файлы
- •9.6. Главный файл проекта
- •9.7. Добавление, изменение и удаление файлов проекта
- •9.8. Закрытие проекта
- •9.9. Построение приложения
- •Значения параметра nBuildAction
- •9.10. Запуск и выход из приложения
- •10. Формы
- •10.1. Перечень команд, функций и объектов
- •Список команд, функций и объектов
- •10.2. Создание формы
- •10.3. Выполнение формы
- •10.3.1. Команда do form
- •10.3.2. Отображение формы, созданной программно
- •10.4. Форма как объект
- •10.4.1. Свойства, события и методы формы
- •Категории доступности свойств формы
- •10.4.2. Форма как контейнер
- •10.4.3. Обеспечение доступа к объектам формы и набора форм
- •10.5. Набор форм
- •10.6. Окружение данных
- •10.6.1. Объект DataEnvironment
- •10.6.2. Объекты Cursor и Relation
- •10.7. Объекты, размещаемые в форме
- •10.7.1. Перечень объектов
- •Объекты формы
- •10.7.2. Координаты объектов
- •10.7.3. Примеры управления вложенными объектами
- •10.7.4. Список с различными источниками данных
- •10.8. Панель инструментов: создание и пример употребления
- •10.9. Дополнительные сведения для форм
- •10.9.1. Обмен данными между формами
- •10.9.2. Устранение главного окна vfp
- •10.9.3. Использование изображений
- •10.9.4. Сессия данных
- •11. Меню
- •11.1. Команды и функции для меню
- •Команды и функции
- •11.2. Применение меню
- •11.2.1. Проектировщик меню
- •11.2.2. Создание меню средствами проектировщика
- •Skip For-выражения
- •11.2.3. Короткое меню
- •11.2.4. Меню в sdi-форме
- •11.3. Системное меню
- •Заголовки и имена пунктов горизонтального подменю системного меню vfp
- •Заголовки и имена пунктов вертикальных подменю системного меню vfp
- •12. Извлечение и отображение данных
- •12.1. Перечень команд и системных переменных
- •Список команд и системных переменных
- •12.2. Проектировщик запроса
- •12.3. Перекрестные таблицы
- •Параметры генератора перекрестной таблицы
- •12.4. Диаграммы
- •12.5. Проектировщик отчета
- •12.6. Проектировщик этикетки
- •12.7. Команды для отчета и этикетки
- •13. Классы и объекты
- •13.1. Перечень команд и функций
- •Список команд и функций
- •13.2. Классы
- •Базовые классы vfp
- •Описание элементов массива pemName_comattrib
- •Флаги атрибута
- •13.3. Объекты
- •13.4. События объектов vfp
- •Значения параметра nFlags
- •Значения параметра nInfoType
- •Значения cProperty
- •Значения параметра nNewValue
- •13.6. Информация о классе и объекте
- •Значения параметра nAttribute
- •13.7. Объекты, встроенные в vfp
- •Объекты, встроенные в vfp
- •14. БазА данных
- •14.1. Перечень команд и функций
- •Список команд и функций
- •14.2. Реляционная модель данных
- •Отношение "Сотрудник – Дата рождения"
- •14.3. Функциональные зависимости и нормализация таблиц данных
- •14.3.1. Представление функциональных зависимостей
- •Уточненное однотабличное представление зависимости "Сотрудник – Дата рождения"
- •Уточненное двухтабличное представление зависимости "Сотрудник – Дата рождения"
- •14.3.2. Нормализация отношений
- •Изделия и поставщики
- •Реализация изделий
- •Изделия
- •Поставщики изделий
- •Поставщики
- •Поставщики изделий
- •Виды изделий
- •Изделия
- •14.4. Ссылочная целостность данных
- •14.5. Состав и свойства базы данных и ее компонентов
- •14.6. Команды для баз данных
- •14.6.1. Команды, оперирующие базой данных
- •14.6.2. Команды, оперирующие таблицей базы данных
- •14.6.3. Триггеры
- •14.6.4. Хранимые процедуры
- •14.7. Функции для баз данных
- •Возможные значения параметра cType
- •Возможные значения параметра cType
- •15. Команды и функции для таблиц и их индексов
- •15.1. Перечень команд
- •Список команд и функций
- •15.2. Выбор рабочей области
- •15.3. Открытие и закрытие таблицы
- •15.4. Создание и изменение таблиц
- •Варианты задания параметров FieldType, nFieldWidth и nPrecision
- •Поля таблицы, создаваемой copy structure extended
- •15.5. Сортировка таблицы
- •15.6. Редактирование записей таблиц
- •15.6.1. Общие опции и параметры команд
- •Опции и параметры команд
- •15.6.2. Предварительные замечания
- •15.6.3. Добавление записей
- •Значения по умолчанию полей разных типов
- •15.6.4. Обновление записей
- •15.6.5. Копирование записей
- •15.6.6. Удаление и восстановление записей
- •15.7. Сопутствующие команды
- •Значения для параметра nLevel
- •Команды и функции, на которые влияет установка set compatible
- •15.8. Функции для таблиц
- •15.9. Управление индексами
- •15.9.1. Индексирование таблиц
- •15.9.2. Команды для индексов
- •15.9.3. Функции для индексов
- •Значения nIndexNumber
- •15.10. Поиск и перемещение в таблице
- •15.10.1. Команды для Поиска и перемещения в таблице
- •15.10.2. Функции для Поиска и перемещения в таблице
- •15.11. Блокировка таблиц и записей
- •15.11.1. Автоматическая блокировка
- •Команды и функции, выполняющие автоматическую блокировку
- •15.11.2. Команды, используемые при блокировке таблиц и записей
- •15.11.3. Функции, используемые при блокировке таблиц и записей
- •15.12. Экспорт и импорт данных
- •Типы экспортируемых и импортируемых файлов
- •15.13. Управление свойствами таблиц и курсоров
- •Свойства курсора vfp
- •Свойства курсора vfp, не описанные в табл. 15.11
- •15.14. Курсор-адаптер
- •15.15. Буферизация
- •15.15.1. Виды буферизации
- •15.15.2. Фиксация и отмена изменений
- •Значения параметра nRows
- •Результаты функции getfldstate( ) и параметр nFieldState функции setfldstate( )
- •15.16. Транзакции
- •15.17. Связывание таблиц
- •15.18. Просмотр и редактирование таблиц
- •15.18.1. Команда browse
- •Возможные символы cFormatCodes
- •15.18.2. Вычисляемые поля
- •15.18.3. Поддержка set skip
- •15.18.4. Обновление данных
- •15.18.5. Команды edit и change
- •15.19. Выбор данных
- •Агрегатные функции
- •Значения параметра JoinType
- •Опции и параметры выражения отбора
- •Допустимые неявные преобразования типов данных
- •Результаты неявного преобразования типов данных двух полей
- •Особенности поведения sql-опций в версии 8.0
- •Особенности поведения sql-опций в версии 9.0
- •16. Представление данных
- •16.1. Перечень команд и функций
- •Перечень команд и функций для именованных соединений
- •Перечень функций для sql-соединений
- •Перечень команд и функций для sql-видов
- •16.2. Именованные Соединения
- •16.2.1. Создание Именованного Соединения
- •16.2.2. Команды для именованных соединений
- •16.3.1. Работа с удаленным источником данных
- •16.3.2. Описание базы данных BookSale
- •Некоторые таблицы базы данных BookSale.Mdb
- •Поля таблиц базы данных BookSale.Mdb
- •Индексы таблиц базы данных BookSale.Mdb
- •16.3.3. Параметр и результат sql-Функций
- •16.3.4. Выполнение sql-функций в асинхронном режиме
- •Свойства sql-соединения
- •Столбцы курсора, создаваемого sqltables( )
- •Имена столбцов курсора в формате "foxpro"
- •Имена столбцов курсора в формате "native"
- •Состав массива aCountInfo
- •16.3.6. Пример с запросом к нескольким таблицам
- •16.4. Виды
- •16.4.1. Понятие вида. Интерактивное построение
- •16.4.2. Команды и функции для sql-видов
- •16.4.3. Автономные виды
- •17. Динамический обмен данными
- •Список dde-функций
- •Служебные имена dde-серверов
- •Параметры, передаваемые процедуры, заданной cUdfName
- •Значения параметра cOption
- •Параметр Action и соответствующие значения параметров Item, Data и AdviseStatus
- •Значения параметра cOption
- •Параметры cUdfName-функции
- •Номера dde-ошибок
- •18. Окна, клавиатура, мышь и цвет
- •Команды и функции для окон
- •Команды и функции для клавиатуры
- •Команда и функции для мыши
- •Управление цветом
- •19. Файлы и директории
- •19.1. Перечень команд
- •Список команд
- •19.2. Команды для файлов и директорий
- •19.3. Функции для файлов и директорий
- •Функции для файлов и директорий
- •19.4. Диалоги
- •Одноименные параметры рассматриваемых в разделе функций
- •Наиболее часто употребляемые значения параметра nFlags
- •Форматы графических файлов, поддерживаемые vfp
- •20.1. Перечень команд и функций
- •Список команд и функций
- •20.2. Некоторые понятия xml
- •20.3. Набор символов Unicode
- •20.4. Кодировка utf-8
- •20.5. Базовые правила xml
- •Кодирование зарезервированных символов
- •Формы представления различных типов данных
- •20.6. Схемы
- •20.7. Формат экспортируемых данных
- •20.8. Описание xml-функций
- •Значения параметра nOutputFormat
- •Значения для параметра nFlags
- •Значения параметра nFlags
- •Соответствия Windows-совместимых кодовых страницы и значений xml-атрибута encoding
- •Значения параметра cSchemaName
- •Значения для параметра nFlags
- •Соответствие типов данных vfp и xsd
- •Значения для параметра nFlags
- •Литература
- •Предметный указатель
- •Содержание
12.6. Проектировщик этикетки
Использует те же средства, что и проектировщик отчета.
Откроем проектировщик (File – New – Label – New file) этикетки, сохраним создаваемую этикетку в файле d:\AuthorsAndBooks.lbx и добавим в окружение данных этикетки (View – Data Environment) ранее сформированную таблицу d:\AuthorsAndBooks.dbf, служившую источником данных рассмотренного выше отчета.
Предположим, что нужно упаковать книги в конверты и на каждый конверт наклеить этикетку, содержащую сведения об авторе, название книги и ее цену. Построим, используя, например, команду меню Report – Quick Report, макет такой этикетки и приведем его в соответствие с рис. 12.38.
Рис. 12.38. Макет этикетки AuthorsAndBooks.lbx
Вдобавок, чтобы обеспечить выравнивание цены по левой границе, во-первых, преобразуем цену в символьное представление, убрав ведущие пробелы, но сохранив 2 знака после десятичной точки. Для этого поле Price заменим следующим выражением:
Ltrim(Transform(Price, '99999.99'))
Во-вторых, в окне редактирования свойств поля Price выберем вкладку Format и активизируем переключатели Character и Left (рис. 12.39).
Рис. 12.39. Вкладка Format поля Price
Горизонтальный и вертикальный отрезки прямой, введенные в этикетку, предназначены для отображений линий разреза. Стиль линий Dash-dot выбирается в окне редактирования свойств линии (рис. 12.40).
Рис. 12.40. Фрагмент окна редактирования свойств линии
Кроме того, увеличено до 2-х число колонок на странице (поле Columns Number вкладки Page Layout окна редактирования свойств отчета).
Теперь этикетки можно просмотреть (рис. 12.41) и при необходимости распечатать.
Рис. 12.41. Несколько этикеток
12.7. Команды для отчета и этикетки
Команда
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.
