- •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.2. Выбор рабочей области
Команда
SELECT nWorkArea | cTableAlias
активизирует (делает текущей) рабочую область, заданную номером рабочей области nWorkArea или псевдонимом cTableAlias открытой таблицы. Таблица, открытая в текущей рабочей обрасти, именуется текущей.
Если в качестве nWorkArea взят 0, то выбирается самая низкая неиспользуемая рабочая область.
Для первых 10 рабочих областей могут быть использованы буквы от A до J.
После запуска VFP активной является область 1.
Пример:
close databases
close tables all
open database d:\HomeLibrary\HomeLibrary.dbc
select 1 && Выбираем область 1
use Authors && Открываем таблицу в области 1
select 2 && Выбираем область 2
use Books && Открываем таблицу в области 2
select A && Выбираем область 2
activate window View && Открываем окно Data Session
Замечание. Окно сессии данных (Data Session), в котором отображаются открытые таблицы и установленные межтабличные связи, открывается командой ACTIVATE WINDOW View или SET [VIEW].
15.3. Открытие и закрытие таблицы
Команда
USE [[DatabaseName!]Table | SQLViewName | ?] [IN nWorkArea | cTableAlias] [ONLINE] [ADMIN] [AGAIN] [NOREQUERY [nDataSessionNumber]] [NODATA] [INDEX IndexFileList | ? [ORDER [nIndexNumber | IDXFileName | [TAG] TagName [OF CDXFileName] [ASCENDING | DESCENDING]]]] [ALIAS cTableAlias] [EXCLUSIVE] [SHARED] [NOUPDATE] [CONNSTRING cConnectionString | (m.nStatementHandle)]
открывает (закрывает) таблицу или SQL-вид, а также индексные файлы таблицы.
Опции и параметры:
TableName – имя открываемой таблицы. Может содержать путь; расширение необязательно.
Если открывается таблица нетекущей открытой базы данных, то имени таблицы предшествует DatabaseName!, где DatabaseName – это имя базы данных.
Если имя таблицы TableName и/или базы данных содержит пробелы то имя [DatabaseName!]Table заключается в качычки.
Замечание. VFP не распознает правильно путь, если в его имени есть восклицательный знак.
SQLViewName – имя открываемого SQL-вида, созданного интерактивно или командой CREATE SQL VIEW. Вид может быть и автономным.
? – открывает Use-диалог выбора таблицы.
IN nWorkArea – рабочая область, в которой таблица открывается. Однако команда
USE IN nWorkArea
закрывает таблицу, открытую в рабочей области nWorkArea.
Команда USE с опцией IN 0 откроет таблицу в самой низкой свободной области, например:
close databases
close tables all
open database d:\HomeLibrary\HomeLibrary.dbc
use Authors in 0 && Открываем таблицу в области 1
use Books in 0 && Открываем таблицу в области 2
use in 1 && Закрываем таблицу Authors
IN cTableAlias – открывает таблицу в области, в которой используется псевдоним cTableAlias, например:
use Authors in 0 && Открываем таблицу в области 1
use Books in Authors && Закрываем Authors и открываем Books
Если параметр nWorkArea или cTableAlias опущен, то таблица открывается в текущей рабочей области. Команда USE, выполненная без других опций, закрывает таблицу, открытую в текущей рабочей области. Например:
&& Выбираем область, использующую псевдоним Authors
select Authors
use && Закрываем Authors
ONLINE – открывает автономный вид, созданный CREATEOFFLINE( ). Имя открываемого автономного вида указывается параметром SQLViewName. После открытия вида данные на сервере могут быть обновлены функцией TABLEUPDATE( ).
Автономные виды должны открываться в режиме монопольного доступа. Это обеспечивается либо использованием в USE опции EXCLUSIVE, либо в результате установки SET EXCLUSIVE в ON.
Автономный вид нельзя открыть или закрыть во время транзакции.
ADMIN – открывает автономный вид, созданный CREATEOFFLINE( ), но не обновляет данные на сервере (не переносит туда изменений, выполненных в автономном виде).
Опция ADMIN, как и опция ONLINE, не может быть использована внутри транзакции.
AGAIN – открывает повторно таблицу в заданной опцией IN или текущей рабочей области.
При повторном открытии таблицы в другой рабочей области берутся все атрибуты области, в которой таблица открыта первый раз. Например, если таблица первоначально открыта для чтения и в монопольном режиме, то и в другой обрасти она будет доступна только для чтения и монопольно. Индексные файлы, открытые с первичной таблицей, доступны и в области, в которой таблица открывается повторно (если только при выполнении USE AGAIN не открываются индексы). При повторном открытии SET ORDER устанавливается в 0.
Если USE AGAIN открываются новые дополнительные индексы таблицы, то в первичной области SET ORDER устанавливается в 0.
Если таблица открывается повторно в другой рабочей без употребления опции AGAIN, то в первичной рабочей области таблица будет закрыта.
Таблица, открываемая повторно, получает по умолчанию псевдоним по имени рабочей области, например:
use Books again in 200 && Псевдоним таблицы – W200
В VFP повторное открытие таблицы не приводит к выделению нового идентификатора файла.
NOREQUERY [nDataSessionNumber] – данные удаленного SQL-вида не будут загружаться повторно. Опция применяется только с SQL-видами и, как правило, в команде USE с опцией AGAIN. Цель ее употребления – повышение быстродействия за счет отказа от повторной загрузки данных (она уже выполнена при первом вызове команды USE).
Параметр nDataSessionNumber задает номер сессии данных; если он опущен то берется текущая сессия.
NODATA – загружается только структура SQL-вида. Применяется для быстрого определения структуры SQL-вида. Скорость обеспечивается отказом от загрузки данных.
INDEX IndexFileList – задает список открываемых вместе с таблицей индексных IDX- и независимых составных CDX-файлов. Расширения должны присутствовать, если открываемые IDX- и CDX-файлы имеют одинаковое имя.
Порядок нумерации индексов IDX-файлов и тегов CDX-файлов см. в описании команды SET ORDER. Индекс или тег, имеющий номер 1, если в команде USE опущена опция ORDER и имеется опция INDEX, становится управляющим.
INDEX ? – открывает Open-диалог выбора IDX- или CDX-файла.
ORDER nIndexNumber – задает позицию, по которой выбирается управляющий индекс или тег. Выбранный индекс может отличаться от установленного опцией INDEX.
Порядок выбора управляющего индекса или тега см. в описании команды SET ORDER.
Если nIndexNumber = 0, то управляющий индекс (тег) не устанавливается (записи таблицы отображаются и обрабатываются в соответствии с физическом порядком их следования), но все индексные файлы остаются открытыми. Это обеспечивает их обновление при изменениях в таблице. Опция ORDER без nIndexNumber равнозначна ORDER 0.
ORDER IDXFileName – задает управляющий индексный IDX-файл. Параметр IDXFileName может включать путь.
ORDER [TAG] TagName [OF CDXFileName] – устанавливает управляющим тег TagName структурного или независимого CDX-файла. Если тег TagName имеется в нескольких открытых индексных файлах таблицы, то обязательно наличие опции OF CDXFileName.
ASCENDING (DESCENDING) – открывает таблицу, располагая ключи управляющего индекса по возрастанию (убыванию). Сам же способ формирования индексного файла, заданный при его создании, не меняется. Опция не может быть использована, если не задан управляющий индекс.
Пример:
use Authors order AuthorId descending
ALIAS cTableAlias – создает псевдоним cTableAlias таблицы. Он используется при обращении к полям таблицы в функциях и командах, требующих его присутствия. Может содержать до 254 символов включительно.
Если опция ALIAS опущена, то псевдоним совпадает с именем таблицы.
Если опция ALIAS опущена и имя открываемой таблицы вступает в конфликт с существующим псевдонимом, то для нее берется псевдоним по умолчанию (символьное представление номера рабочей области), например:
close databases
open database d:\HomeLibrary\HomeLibrary.dbc
use Authors alias Books
use Books in 3 && Получит псевдоним "C"
Если употребляется уже существующий псевдоним, то генерируется ошибка, например:
use Authors alias Tbl
use Books in 0 alias Tbl && Генерируется ошибка
Замечание. Для указания имени поля Field в командах и функциях, принимающих это имя в качестве параметра, может быть использован один из следующих способов:
cTableAlias.Field
или
cTableAlias->Field
EXCLUSIVE – открывает таблицу в режиме монопольного доступа.
SHARED – открывает таблицу в режиме разделяемого доступа. Опция имеет приоритет над установкой SET EXCLUSIVE в ON.
NOUPDATE – предотвращает изменения таблицы и ее структуры.
CONNSTRING cConnectionString | (m.nStatementHandle) – строка SQL-соединения (cConnectionString) с ODBC-источником данных или переменная памяти (m.nStatementHandle), хранящая идентификатор существующего SQL-соединения.
При включении cConnectionString VFP передает строку соединения удаленному, заданному параметром SQLViewName виду, который ее использует для соединения с указанным в строке источником данных. Если cConnectionString – это строка нулевой длины, то появляется диалог выбора источника данных.
Если cConnectionString содержит не все необходимые для соединения данные, то откроется Login-диалог.
Если опция CONNSTRING опущена, то используется установленное по умолчанию соединение.
Параметр m.nStatementHandle употребляется с разделяемыми соединениями.
Пример:
close databases
open database d:\HomeLibrary\HomeLibrary.dbc
&&
&& Используем строку соединения
use BookSale in 0 connstring "dsn=BookSaleDataBase;uid='nick';pwd='name'"
&&
&& Используем идентификатор SQL-соединения
myUid = 'nick'
myPass = 'name'
nStHandle = SQLStringConnect('dsn=BookSaleDataBase;uid=<myUid>;pwd=<myPass>')
use BookSale in 0 connstring nStHandle again
activate window View
Функция
ISREADONLY([nWorkArea | cTableAlias])
возвращает .T., если текущая или заданная параметром nWorkArea | cTableAlias таблица открыта только для чтения, или .F. – в противном случае. Если осуществлен вызов ISREADONLY(0), то функция вернет результат для текущей базы данных. Если нет текущей таблицы или базы данных или если указан неиспользуемый псевдоним, то функция сгенерирует ошибку.
Программно таблица открывается для чтения при наличии опции NOUPDATE в команде USE. Также DBF-файлу таблицы в окне задания его свойств можно установить атрибут MS-DOS "Только чтение".
Чтобы убедиться в наличии текущей базы данных, можно использовать условие
not Empty(Dbc( ))
Курсор, созданный командой SELECT – SQL, всегда имеет статус "Только чтение".
Пример:
close databases
open database d:\HomeLibrary\HomeLibrary.dbc
use Authors noUpdate
? IsReadOnly('Authors') && Напечатает: .T.
? IsReadOnly(0) && Напечатает: . F.
Функция
ISEXCLUSIVE([nWorkArea | cTableAlias | cDatabaseName [, nType]]) )
возвращает.T., если таблица или база данных cDatabaseName открыта в режиме монопольного доступа, или .F. – в противном случае.
Параметр:
nType – равен 1 (по умолчанию), если результат возвращается для таблицы, или 2, если – для базы данных.
Команда
CLOSE TABLES [ALL]
закрывает все таблицы текущей базы данных. Если таковой не имеется, то закрываются все свободные таблицы.
Опция ALL закрывает все таблицы всех баз данных и все свободные таблицы. Все базы данных остаются открытыми.
Если команда выполнена во время транзакции, то возникнет ошибка.
Таблица в текущей или указанной рабочей области закрывается командой USE.
Команда
CLOSE ALL
выбирает рабочую область 1 и закрывает следующие файлы:
базы данных, таблицы и индексы текущей и всех других сессий данных;
файлы низкого уровня, созданные FCREATE( ) и FOPEN( );
проектировщики формы, этикетки, отчета и запроса и диспетчер проекта.
Команда не закрывает командное, отладочное и трассировочное окна. Также она не закрывает файл, открытый SET PRINTER, и Help.
Команда
SET TABLEPROMPT ON | OFF
активизирует (ON) или отключает (OFF) режим появления диалога Open в командах, позволяющих пользователю выбирать таблицу, если она не открыта.
Если задана опция OFF и таблица не открыта, то возникнет ошибка исполнения.
Установка SET TABLEPROMPT действует на следующие команды: BROWSE, DELETE – SQL, GO | GOTO, INDEX, INSERT – SQL, PACK, REPLACE, REPORT FORM, SELECT – SQL, SET FILTER, SKIP, UPDATE – SQL и ZAP.
