- •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
- •Литература
- •Предметный указатель
- •Содержание
15.9.3. Функции для индексов
Функции, если вызываются в параметром nWorkArea | cTableAlias, возвращают результат для таблицы либо открытой в рабочей области nWorkArea, либо с псевдонимом cTableAlias. Если параметром cTableAlias задан неиспользуемый псевдоним, то VFP сгенерирует ошибку.
Если параметр nWorkArea | cTableAlias опущен, то результата возвращается для текущей таблицы.
Функции, возвращающие имя файла, например CDX( ), вернут полное имя файла, если SET FULLPATH установлен в ON, или имя файла с именем диска, если SET FULLPATH установлен в OFF.
Функция
DESCENDING([cCDXFileName [, nIndexNumber [, nWorkArea | cTableAlias]]])
возвращает .T., если тег или индекс созданы с опцией DESCENDING или если эта опция включена для тега или индекса в команду USE, SET INDEX или SET ORDER. В противном случае функция вернет .F.
Параметры:
cCDXFileName – имя составного индексного CDX-файла, тег которого проверяется командой.
nIndexNumber – номер тега в CDX-файле.
Если cCDXFileName – это строка нулевой длины, то nIndexNumber указывает либо на индексный IDX-файл, либо на тег CDX-файла. Порядок нумерации открытых IDX-файлов и тегов открытых CDX-файлов см. в описании команды SET ORDER.
Функция вернет пустую строку, если величина nIndexNumber больше числа тегов в CDX-файле или, когда cCDXFileName = "" больше числа открытых IDX-файлов и тегов открытых CDX-файлов.
Если функция используется без параметров, то она возвращает результат для управляющего IDX-индекса или CDX-тега текущей таблицы. Если таблица не имеет открытых индексов или не установлен управляющий индекс, то DESCENDING( ) вернет .F.
Функции
ORDER([nWorkArea | cTableAlias [, nPath]])
или
SYS(22 [, nWorkArea])
возвращают имя управляющего индексного IDX-файла или тега CDX-файла для текущей или заданной таблицы. Если в функции ORDER( ) задан числовой параметр nPath, то вместе с именем индекса возвращается и путь к индексному файлу. Значение nPath – любое число.
Функции
CDX(nIndexNumber [, nWorkArea | cTableAlias])
или
MDX(nIndexNumber [, nWorkArea | cTableAlias])
возвращают имя открытого составного индексного файла. Если область nWorkArea пуста или задан неиспользуемый псевдоним cTableAlias, то функции вернут пустую строку.
Параметр:
nIndexNumber – номер составного индексного файла. Принимает указанные в табл. 15.8.
Таблица 15.8
Значения nIndexNumber
nIndexNumber |
Результат функции CDX( ) | MDX( ) |
Больше числа открытых CDX-файлов |
Возвращает пустую строку |
Таблица имеет структурный составной индексный файл и один или более независимых составных индексных файлов |
|
1 |
Возвращает имя структурного индексного файла (оно всегда совпадает с именем таблицы) |
2 |
Возвращает имя первого независимого составного индексного файла, указанного в списке индексных файлов команды SET INDEX или опции INDEX команды USE |
3 |
Возвращает имя второго независимого составного индексного файла этого списка (если таковой имеется) и т. д. |
Таблица не имеет структурного составного индексного файла, но обладает одним или более независимыми составными индексными файлами |
|
1 |
То же, что и при nIndexNumber = 2 для таблицы со структурным индексным файлом |
2 |
" " nIndexNumber = 3 " " |
Пример. Выводятся все открытые CDX-файлы таблицы, открытой в области 1.
set fullpath on && Возвращаем полное имя файла
if Used(1) then
nIndexNumber = 0
do while .T.
nIndexNumber = nIndexNumber + 1
cdxName = CDX(nIndexNumber)
if Empty(cdxName) then
exit
endif
? cdxName
enddo
else
MessageBox('Область 1 не используется!')
endif
Функция
NDX(nIndexNumber [, nWorkArea | cTableAlias])
возвращает имя открытого индексного IDX-файла для текущей или указанной таблицы.
Параметр:
nIndexNumber – задает позицию возвращаемого имени индексного IDX-файла в списке индексных файлов команды SET INDEX или опции INDEX команды USE. Порядок нумерации индексных файлов и тегов этого списка см. в описании команды SET ORDER.
Функция вернет пустую строку, если nIndexNumber больше числа открытых индексных IDX-файлов.
Функция
TAG([cCDXFileName [, nTagNumber[, nWorkArea | cTableAlias]]])
возвращает имя тега открытого составного индексного CDX-файла или имя IDX-файла.
Функция, если вызвана без параметров, вернет имя управляющего IDX-индекса или CDX-тега.
Параметры:
cCDXFileName – имя составного индексного CDX-файла, имя тега которого возвращается.
nTagNumber – номер тега или IDX-файла.
Теги нумеруются в порядке их создания. Функция вернет пустую строку, если nTagNumber больше числа тегов в CDX-файле.
Общий порядок нумерации открытых индексных IDX-файлов и тегов открытых составных индексных файлов см. в описании команды SET ORDER. Этот порядок используется для формирования результата, если параметр CDXFileName опущен.
Пример 1. Выводятся имена всех тегов структурного индексного файла таблицы Authors.
close databases
open database d:\HomeLibrary\HomeLibrary.dbc
use Authors
for nCount = 1 to TagCount("Authors")
? Tag("Authors", nCount)
next
Результат:
AUTHORID
AUTHOR
Пример 2. Для таблицы Authors создаются и открываются 2 IDX-файла и 1 независимый составной индексный файл, имеющий 2 тега. Затем выводятся имена всех открытых индексных IDX-файлов и тегов открытых составных индексных файлов таблицы.
Пример иллюстрирует также порядок нумерации IDX-файлов, CDX-файлов и их тегов.
close databases
open database d:\HomeLibrary\HomeLibrary.dbc
use Authors
&&
&& Создаем 2 IDX-файла
index on AuthorId to d:\Au_ID
index on Author to d:\Au_All
&&
&& Создаем CDX-файл с двумя тегами
index on Str(AuthorId) tag Au_ID_Str of d:\Au_CDX
index on Left(Author, 1) tag Au_1 of d:\Au_CDX
&&
&& Открываем IDX- и CDX-файлы
set index to d:\Au_ID, d:\Au_CDX, d:\Au_All
&&
&& Организуем альтернативный вывод в файл d:\a.txt
set alternate to d:\a.txt
set alternate on
&&
&& Выбор и вывод имен индексов и тегов
for nCount = 1 to TagCount( )
? Tag("", nCount)
next
&&
&& Закрываем файл d:\a.txt
set alternate to
&&
&& Закрываем созданные IDX- и CDX-файлы
&& Структурный CDX-файл останется открытым
close indexes
&&
&& Удаляем за ненадобностью созданные IDX- и CDX-файлы
erase d:\Au_*.?dx
Состав файла d:\a.txt:
AU_ID
AU_ALL
AUTHOR
AUTHORID
AU_ID_STR
AU_1
Функция
TAGCOUNT([cCDXFileName [, nWorkArea | cTableAlias]])
возвращает число тегов составного индексного CDX-файла и число открытых IDX-файлов.
Параметр:
cCDXFileName – имя составного индексного CDX-файла, число тегов которого возвращается.
Если параметр cCDXFileName опущен, то функция TAGCOUNT( ) вернет число тегов всех открытых составных индексных файлов и число открытых IDX-файлов таблицы.
Замечание. Функция включена для совместимости с dBASE.
Функция
TAGNO([cIndexName [, cCDXFileName [, nWorkArea | cTableAlias]])
возвращает позицию тега в составном индексном CDX-файле или индекса в открытых IDX-файлах.
Параметры:
cIndexName – имя тега составного индексного файла или имя IDX-файла.
cCDXFileName – имя составного индексного CDX-файла, для которого возвращается позиция тега IndexName.
Функция вернет 0, если управляющий индекс не установлен и необязательные параметры опущены.
Замечание. Функция включена для совместимости с dBASE.
Функция
CANDIDATE([nIndexNumber] [, nWorkArea | cTableAlias])
возвращает .T., если тег является кандидатным, или .F. – в противном случае.
Параметр:
nIndexNumber – номер тега в структурном или независимом составном индексном файле. Если для таблицы открыто несколько составных индексных файлов, то теги нумеруются в порядке, описанном при рассмотрении команды SET ORDER: сначала идут теги структурного индексного файла, затем независимых составных индексных файлов; внутри каждого составного индексного файла теги нумеруются в порядке их создания.
Если параметр nIndexNumber опущен, то функция проверяет управляющий тег. Если нет управляющего тега, то CANDIDATE( ) вернет .F.
Если управляющим является IDX-индекс, то функция вернет .F., поскольку кандидатным может быть индекс только составного CDX-файла.
Функция
PRIMARY([nIndexNumber] [, nWorkArea | cTableAlias])
возвращает .T., если тег является первичным, или .F. – в противном случае.
Смысл параметров см. в описании функции CANDIDATE( ).
Функции
KEY([CDXFileName,] nIndexNumber [, nWorkArea | cTableAlias])
или
SYS(14, nIndexNumber [, nWorkArea | cTableAlias])
возвращают строку, содержащую индексное выражение тега составного CDX-файла или индексного IDX-файла текущей или заданной таблицы.
Если необязательные параметры опущены, то индекс или тег выбираются по значению параметра nIndexNumber.
Параметры:
CDXFileName – имя открытого составного CDX-файла (может быть указано имя структурного CDX-файла), для тега которого функция KEY( ) возвращает результат. Тег выбирается по значению параметра nIndexNumber.
nIndexNumber – позиция в списке открытых индексных IDX-файлов и CDX-файлов, по которой выбирается индекс или тег. Порядок нумерации индексов и тегов см. в описании команды SET ORDER.
Пример. Печатаются имена тегов и их индексных выражений структурного индексного файла таблицы Books.
close databases
open database d:\HomeLibrary\HomeLibrary.dbc
use Books
select Books
for nCount = 1 to TagCount( )
? Tag(nCount) + ' ' + Key(nCount) && Печать результата
&& или:
&& ? Tag(nCount) + ' ' + Sys(14, nCount)
endFor
Результат:
BOOKID BOOKID
BOOK LEFT(BOOK,20)
Функции
FOR([nIndexNumber [, nWorkArea | cTableAlias]])
или
SYS(2021, nIndexNumber [, nWorkArea | cTableAlias])
возвращают выражение индексного фильтра индекса или тега таблицы. Буквы в результате – прописные. Если параметр nIndexNumber отсутствует, то результат возвращается для управляющего индекса или тега. Если такового не имеется, то функция вернет пустую строку. Также пустая строка будет возвращена, если индекс создан без употребления опции FOR или если nIndexNumber больше числа открытых индексов и тегов таблицы.
Параметр:
nIndexNumber – позиция в списке тегов составного CDX-файла cCDXFileName или открытых индексных IDX-файлов и CDX-файлов, по которой выбирается индекс или тег. Порядок нумерации индексов и тегов см. в описании команды SET ORDER.
Функция FOR( ) схожа с функцией SYS(2021); включена для совместимости с dBASE IV.
Функция
IDXCOLLATE([cCDXFileName,] nIndexNumber [, nWorkArea | cTableAlias])
возвращает строку, содержащую collate-последовательность для индекса IDX-файла или тега CDX-файла текущей или заданной таблицы.
Параметры:
cCDXFileName – имя составного индексного CDX-файла. Может быть именем структурного индекса, тег которого берется функцией IDXCOLLATE( ). Может быть задан в виде пустой строки.
nIndexNumber – позиция в списке тегов составного CDX-файла cCDXFileName или открытых индексных IDX-файлов и CDX-файлов, по которой выбирается индекс или тег. Порядок нумерации индексов и тегов см. в описании команды SET ORDER.
Если параметр cCDXFileName задан не в виде строки нулевой длины, то тег выбирается из числа тегов указанного параметром cCDXFileName составного индексного CDX-файла. Если cCDXFileName – это пустая строка, то индекс или тег берется из списка, приведенного в описании команды SET ORDER.
Функция вернет пустую строку, если nIndexNumber больше размера списка тегов или индексов и тегов.
Функция
SYS(3050, nType, [nBuffMemSize])
устанавливает размер текущего или фонового буфера памяти. Возвращает символьное представление размера памяти, выделенной для текущего или фонового буфера.
Текущий буфер – это память, доступная для VFP, когда VFP-приложение является текущим. Фоновый буфер – это память, доступная VFP, когда VFP-приложение работает в фоновом режиме, а текущим является иное приложение.
Функция SYS(3050) позволяет оптимизировать производительность VFP. Так, при выполнении команды REINDEX для ускорения перестройки индексных файлов можно, обратившись к функции SYS(3050), установить достаточно большой размер буфера, например такой, что в нем размещается вся таблица.
Параметры:
nType – тип буфера; принимает следующие значения:
1 – текущий буфер;
2 – фоновый буфер.
nBuffMemSize – максимальный размер буфера в байтах. При задании величины, меньшей 256K, VFP установит размер буфера равным 256K.
Если nBuffMemSize = 0, то функции вернет стартовое значение размера буфера памяти, указанного nType, которое зависит от характеристик компьютера.
