Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VisualFoxPro.doc
Скачиваний:
15
Добавлен:
01.07.2025
Размер:
11 Мб
Скачать
☆

15.13. Управление свойствами таблиц и курсоров

Курсор – это временная таблица, уничтожаемая после ее закрытия.

Команда CREATE CURSOR – SQL

CREATE CURSOR alias_name [CODEPAGE = nCodePage] (FieldName1 FieldType [(nFieldWidth [, nPrecision])] [NULL | NOT NULL] [CHECK lExpression1 [ERROR cMessageText1]] [AUTOINC [NEXTVALUE NextValue [STEP StepValue]]] [DEFAULT eExpression1] [UNIQUE [COLLATE cCollateSequence]] [NOCPTRANS] [, FieldName2...]) | FROM ARRAY ArrayName

создает по списку полей или из массива ArrayName временную таблицу с именем alias_name. Параметр alias_name может быть выражением с именем.

Смысл опций и параметров см. в описании команды CREATE TABLE – SQL.

Пример:

close databases

clear

create cursor Employee ;

(EmpID N(5), Name C(20), Address C(30), City C(30), ;

PostalCode C(10), OfficeNo C(8) NULL, Specialty M)

&&

display structure

wait window "После нажатия на клавишу в курсор будет добавлена запись"

&&

insert into Employee (EmpId, Name, Address, City, PostalCode, ;

OfficeNo, Specialty) ;

values (1002, "Dr. Bonnie Doren", "University of Oregon", "Eugene", ;

"98403", "", "Secondary Special Education")

&& Просмотр добавленной записи

browse

&&

&& Здесь данные могут быть перенесены в постоянную таблицу

&&

&& После закрытия память, отведенная под данные курсора, освобождается

close all

clear

Функция

CURSORSETPROP(cProperty [, eExpression] [, nWorkArea | cTableAlias])

устанавливает значение свойства текущей или заданной параметром nWorkArea | cTableAlias таблицы или курсора VFP.

CURSORSETPROP( ) определяет, в том числе, как обновляются удаленные таблицы источника данных курсора.

Возвращает .T., если значение свойства установлено, или .F. – в противном случае.

Параметры:

cProperty – изменяемое свойство. Для таблицы VFP может быть изменено только значение свойства Buffering.

eExpression – устанавливаемое значение свойства. Если параметр eExpression опущен, то свойство получает значение по умолчанию.

Имена свойств и их возможные значения приведены в табл. 15.11.

Таблица 15.11

Свойства курсора vfp

cProperty

Значения eExpression

"AllowSimultaneousFetch"

 .T. – курсоры схожей конфигурации, разделяющие соединение, могут обновлять записи одновременно;  .F. – не могут. Применяется с удаленными видами, разделяемыми соединениями и ODBC-курсорами

"AutoIncError"

 .T. – генерируется ошибка при попытке вставить или обновить значение поля типа Integer (AutoInc);  .F. – ошибка не генерируется; поставляемое значение, однако, не используется, а берется соответствующая величина

"BatchUpdateCount"*

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

"Buffering"

 1 – (по умолчанию для таблиц) отключает буферизацию записи и таблицы;  2 – пессимистическая буферизация записи;  3 – (по умолчанию для видов) оптимистическая буферизация записи;  4 – пессимистическая буферизация таблицы;  5 – оптимистическая буферизация таблицы. SET MULTILOCKS должен быть установлен в ON для всех значений свойства, кроме 1

"CompareMemo"

 .T. – (по умолчанию) memo- и general-поля, а для удаленного вида timestamp-поля включаются в опцию WHERE для обновления;  .F. – не включаются. Применяется при автоматическом обновлении таблиц источника данных

"FetchAsNeeded"

 .T. – данные доставляются, когда это необходимо, например когда выполняется перемещение на запись, данные которой не доставлены;  .F. – дополнительные данные доставляются во время бездействия. Свойство не используется, когда прогрессивная выборка отключена (FetchSize = –1)

"FetchMemo"*

 .T. – (по умолчанию) доставляются memo- и general-поля вида;  .F. – не доставляются

"FetchSize"*

Число записей, доставляемых единовременно удаленной таблице. По умолчанию равно 100. Установка FetchSize = –1 означает получение полного результата, ограниченного величиной MaxRecords Замечание. Единовременная выборка захватывает соединение на все время доставки данных. Это надо учитывать, задавая FetchSize при работе с разделяемым соединением (ShareConnection = .T.)

"KeyFieldList"

Список разделенных запятыми первичных полей курсора. Должен быть задан при автоматическом обновлении таблиц источника данных

"MapBinary"

 .T. – при SQL-передаче данных SQL_BINARY, SQL_VARBINARY и SQL_LONGVARBINARY ODBC-типы данных приводятся к типу данных Varbinary или Blob. Для удаленных видов команда CREATE SQL VIEW тип данных ODBC SQL_LONGVARBINARY обрабатывает как тип данных Blob, а типы данных ODBC SQL_BINARY и SQL_VARBINARY – как Varbinary, если длина поля источника данных не более 254 байт, и как Blob – в противном случае;  .F. – (по умолчанию) при SQL-передаче данных SQL_BINARY и SQL_VARBINARY ODBC-типы данных приводятся к типу данных Character. Для удаленных видов команда CREATE SQL VIEW обрабатывает типы данных ODBC SQL_BINARY и SQL_VARBINARY как Memo. Замечание. Свойство MapBinary доступно как для чтения, так и для записи, когда рабочая область nWorkArea установлена в 0; доступно только для чтения в случае SQL-курсоров и не применяется для таблиц (параметр nWorkArea равен или больше 1)

"MapVarchar"

 .T. – при SQL-передаче данных SQL_WVARCHAR и SQL_VARCHAR ODBC-типы данных приводятся к типу данных Varchar. То же осуществляет и CREATE SQL VIEW для удаленных видов;  .F. – (по умолчанию) при SQL-передаче данных SQL_WVARCHAR и SQL_VARCHAR ODBC-типы данных приводятся к типу данных Character. То же осуществляет и CREATE SQL VIEW для удаленных видов. Для свойства MapVarchar справедливо замечание, сделанное при рассмотрении свойства MapBinary

"MaxRecords"*

Максимальное число записей в возвращаемом результате. По умолчанию –1 – возвращаются все записи. MaxRecords = 0 означает, что вид выполняется, но результаты не доставляются

"ParameterList"

Параметры опции WHERE. Формат списка следующий: ''ParameterName1, 'Type1'; ParameterName2, 'Type2'; ...'', где Type – это символ C, Y, D, T, B, I, L, N, F, Q или V, означающий тип данных параметра (см. табл. 15.2)

"Prepared"

 .T. – SQL-оператор подготовлен для вызовов функции REQUERY( );  .F. – (по умолчанию) не подготовлен. Функция REQUERY( ) используется для повторной выборки данных для SQL-вида. Детали см. в описании функции SQLPREPARE( )

"Refresh"

Задает частоту обновления курсора в текущей сессии данных (устанавливается командой SET DATASESSION). Чтобы задать значение свойства Refresh для всех вновь открытых курсоров, параметр nWorkArea устанавливается в 0. При этом значение свойства Refresh ранее открытых курсоров не изменится. По умолчанию свойство Refresh равно –2 – используется глобальное refresh-значение, заданное параметром nSeconds2 команды SET REFRESH. Замечание. Установка свойства Refresh функцией CURSORSETPROP( ) будет проигнорирована, если параметр nSeconds2 команды SET REFRESH имеет значение 0

"SendUpdates"

 .T. – SQL-обновление посылается таблицам-источникам данных (обновленные в виде данные будут доставлены таблицам-источникам);  .F. – (по умолчанию) не посылается

"Tables"

Список разделенных запятыми имен удаленных обновляемых таблиц. Должен быть задан при автоматическом обновлении таблиц источника данных

"UpdatableFieldList"

Список разделенных запятыми имен полей. Может включать поля как локальных, так и удаленных таблиц. Должен быть задан при автоматическом обновлении таблиц источника данных

"UpdateNameList"

Список разделенных запятыми имен полей удаленных и локальных таблиц, употребляемых в курсоре. Параметр используется для задания VFP-корректных имен полей курсора, когда имена полей в таблице-источнике являются недопустимыми для VFP (например содержат пробелы)

"UpdateType"

Тип обновления:  1 или DB_UPDATE – (по умолчанию) старые данные обновляются новыми;  2 или DB_DELETEINSERT– старые данные удаляются, а новые добавляются. Константы DB_UPDATE и DB_DELETEINSERT могут быть использованы, если имеется ссылка на файл FoxPro.h

"UseMemoSize"*

Размер результата (в байтах), превышение которого приводит к тому, что данные для столбца курсора возвращаются как memo-поле. Может изменяться от 1 до 255. По умолчанию равен 255

"WhereType"

Тип опции WHERE в SQL-обновлении удаленных таблиц. Опция WHERE состоит, если значение свойства WhereType равно:  1 или DB_KEY – из первичных полей (первичные поля задаются свойством KeyFieldList);  2 или DB_KEYANDUPDATABLE – из первичных и обновляемых полей;  3 или DB_KEYANDMODIFIED (по умолчанию) – из первичных и изменяемых полей;  4 или DB_KEYANDTIMESTAMP – из первичных полей и полей, выявляемых в результате сравнения времени их обновления. Константы DB_KEY и пр. доступны, если в приложении имеется ссылка на файл FoxPro.h

*Свойство используется для удаленных видов. На локальные виды изменение его значения влияния не оказывает. Если свойство указано для локального вида в функции CURSORGETPROP( ), то она вернет значение по умолчанию.

Функция CURSORSETPROP( ) может быть употреблена для изменения значения свойства FetchSize, установленного функцией SQLSETPROP( ), которое наследуется из свойств SQL-соединения.

Функция

CURSORGETPROP(cProperty [, nWorkArea | cTableAlias])

возвращает значение свойства cProperty текущей или заданной таблицы или курсора VFP. Тип результата – Character, Numeric, Logical, Object или Variant определяется типом свойства cProperty.

Значения параметра cProperty описаны в табл. 15.11 и 15.12.

Таблица 15.12

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]