Visual FoxPro содержит перечисленные ниже дополнения или улучшения в своих возможноcтях по обработке данных:

Expand imageРасширенные возможности SQL

Visual FoxPro содержит много расширений в возможностях SQL. Для получения более подробной информации смотрите Улучшения в языке SQL.

Expand imageНовые типы данных

В Visual FoxPro включены новые типы полей и данных:

  • Varchar 

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

    Если вы не желаете, чтобы содержимое поля Varchar транслировалось в кодовые страницы, используйте тип поля Varchar (Binary). Для получения подробной информации смотрите описание Тип поля Varchar.

    Вы можете указать разметку типа Varchar между ODBC, ADO и XML типами источников данных и объектами CursorAdapter и XMLAdapter с помощью свойства MapVarchar. Кроме того, вы можете указать разметку Varchar для технологии SQL pass-through м удаленных представлений, используя устнановку MapVarchar в функции CURSORSETPROP( ). Для получения более подробной информации смотрите описание функций CURSORSETPROP( ) и CURSORGETPROP( ).

  • Varbinary 

    Для хранения бинарных значений и литералов фиксированной длины в полях и пременных, без дополнения значения поля дополнительными нулями (0) или без обрезки хвостовых нулевых байтов, введенных пользователем, используйте тип данных Varbinary. Internally, Visual FoxPro binary literals contain a prefix, 0h, followed by a string of hexadecimal numbers and are not enclosed with quotation marks (""), unlike character strings. Для получения более подробной информации смотрите Тип данных Varbinary.

    Вы можете указать разметку бинарного типа данных между ODBC, ADO и XML типами источников данных и объектами CursorAdapter и XMLAdapter, используя свойство MapBinary. Кроме того,  вы можете указать разметку binary для технологии SQL pass-through technology у отдаленных представлений, используя установку MapBinary в функции CURSORSETPROP( ). Для получения более подробной информации смотрите описание функций CURSORSETPROP( ) и CURSORGETPROP( ) Function.

  • Blob

    Для хранения бинарных данных неопределенной длины, используйте тип данных Blob. Для получения более подробной информации смотрите Тип данных Blob.

Множество элементов языка Visual FoxPro затронуты воздействием этих новых типов данных, перечисленных в этом разделе.

Expand imageБинарный индексный тэг, основанный на логических выражениях

Visual FoxPro включает в себя новый бинарный индекс или, индекс битовой карты (bitmap) для создания индексов, основанных на логических выражениях, например, индексов, основанных на записях, помеченных для удаления. Бинарный индекс может быть существенно меньшим по размеру, чем небинарный и может повысить скорость обслуживания индексов. Вы можете создавать бинарные индексы с помощью табличного дизайнера или с помощью команды INDEX. Visual FoxPro, кроме того, включает расширения оптимизации Rushmore в движке SQL для записей, помеченных на удаление.

Для получения более подробной информации смотрите описания Типы индексов Visual FoxPro, Команда INDEX, Команда ALTER TABLE - SQL  и Индексы, основанные на записях, помеченных на удаление.

Expand imageПреобразование типов данных с функцией CAST()

Вы можете преобразовывать выражения одного типа в другой с помощью новой функции CAST( ). Использование CAST( ) позволяет вам создавать SQL предложения более совместимыми с SQL Server.

Для получения более подробной информации смотрите описание функции CAST( ).

Expand imageПолучить курсор и подсчитать записи, затронутые исполнением SQL Pass-Thru

Путем использования параметра aCountInfo функций SQLEXEC( ) и SQLMORERESULTS( ), вы можете получить имя созданного курсора и подсчитать количество записей, затронутых исполнением предложения SQL pass-through.

Для получения более подробной информации смотрите описание функций SQLEXEC() и SQLMORERESULTS() .

Expand imageПоддерживается функциональность Roll-Back когда рассоединилось соединение SQL Pass-Through

Visual FoxPro теперь поддерживает свойство DisconnectRollback для использования с функциями SQLSETPROP(), SQLGETPROP(), DBSETPROP( ) и DBGETPROP(). DisconnectRollback свойство уровня соединения, которое вызывает либо откат транзации либо ее подтверждение, когда вызывается функция SQLDISCONNECT() для хэндла последнего соединения, ассоциированного с соединением.

Свойство DisconnectRollback акцептирует логическое значение.

  • False (.F.) - (По умолчанию) Транзакция будет подтверждена, когда вызывается функция SQLDISCONNECT() fдля хэндла последнего соединения, ассоциированного с соединением.

  • True (.T.) - Производится откат транзакции, когда вызывается функция SQLDISCONNECT() fдля хэндла последнего соединения, ассоциированного с соединением.

Приведенный ниже пример показывает установку свойства DisconnectRollback в функциях DBSETPROP() и SQLSETPROP().

  CopyCode imageСкопировать код
DBSETPROP("testConnection","CONNECTION","DisconnectRollback",.T.)
SQLSETPROP(con,"DisconnectRollback",.T.)

Для получения более подробной информации смотрите DisconnectRollback property in SQLSETPROP( ) Function.

Expand imageSQLIDLEDISCONNECT( ) временно рассоединяет соединения SQL Pass-Through

Вы можете использовать новую фукнцию SQLIDLEDISCONNECT(), позволяющую SQL Pass-Through соединению временно отключиться. Используйте приведенный ниже синтаксис.

  CopyCode imageСкопировать код
SQLIDLEDISCONNECT( nStatementHandle )

The nStatementHandle parameter is set to the statement handle to be disconnected or 0 if all statement handles should be disconnected.

The SQLIDLEDISCONNECT( ) function returns the value 1 if it is successful; otherwise, it returns -1.

The function fails if the specified statement handle is busy or the connection is in manual commit mode. The AERROR( ) function can be used to obtain error information.

The disconnected connection handle is automatically restored if it is needed for an operation. The original connection data source name is used.

If a statement handle is temporarily released, the OBDChstmt property returns 0; the OBDChdbc returns 0 if the connection is temporarily disconnected. A shared connection is temporarily disconnected as soon as all of its statement handles are temporarily released.

Для получения более подробной информации смотрите описание функции SQLIDLEDISCONNECT( ).

Expand imageRetrieving Active SQL Connection Statement Handles

You can retrieve information for all active SQL connection statement handles using the new ASQLHANDLES( ) function. ASQLHANDLES( ) creates and uses the specified array to store numeric statement handle references that you can use in other Visual FoxPro SQL functions, such as SQLEXEC( ) and SQLDISCONNECT( ). ASQLHANDLES( ) returns the number of active statement handles in use or zero (0) if none are available. Для получения более подробной информации смотрите описание функции ASQLHANDLES( ).

Expand imageПолучение закладки (ADO Bookmark) для текущей записи в куурсоре, основанном на ADO-Based Cursor

Теперь функцией CURSORGETPROP( ) поддерживается свойство ADOBookmark. Используйте это свойство для получения закладки ActiveX® Data Objects (ADO) bookmark для текущей записи в курсоре, основанном на ADO.

Для получения более подробной информации смотрите описание свойства ADOBookmark в функции CURSORGETPROP().

Если таблица не выбрана и не указано псевдоимя , то генерируется ошибка с номером 52, "No table is open in the current work area - Нет открытой таблицы в выбраной рабочей области". Если выбранный курсор не является действительным (valid), то генерируется ошибка с номером 1467, "Property is invalid for local cursors - Свойство недействительно для локального курсора".

Expand imageПолучение числа возвращенных из SQL Pass-Through записей

Вы можете получить число записей, полученных в процессе исполнения SQL Pass-Through, из нового свойства курсора RecordsFetched  с помощью функции CURSORGETPROP( ).

Указание свойства RecordsFetched курсора, вернет число полученных записей в курсоре, основанном на OBDC/ADO.

Если записи были удалены или добавлены локально, свойство RecordsFetched курсора может и не вернуть текущее число записей в курсоре, основанном на OBDC/ADO. В дополнение к сказанному, условия фильтра игнорируются.

Для получения более подробной информации смотрите описание свойства RecordsFetched в описании функции CURSORGETPROP().

Expand imageОпределение - завершилась ли выборка

Вы можете опрелить - завершился ли процесс выборки для курсора, основанного на OBDC/ADO  с помощью использования нового свойства курсора FetchIsComplete, полученного с помощью функции CURSORGETPROP(). Свойство имеет аттрибут "только для чтения" как в design, так и в run time.

Это свойство не поддерживается на уровне окружения (рабочая область 0) курсоров, таблиц и локальных представлений.

Свойство курсора FetchIsComplete возвращает логическое выражение True (.T.) если процесс выборки завершился; в противном случае, возвращается False (.F.).

Для получения более подробной информации смотрите описание свойства FetchIsComplete в описании функции CURSORGETPROP( ).

Expand imageISMEMOFETCHED( ) определяет - было ли выбрано в выборку мемо-поле

Вы можете использовать функцию ISMEMOFETCHED() для определения были ли выбраны в выборку поля типа Memo или General, когда вы используете задержаннуб выборку мемо-полей. Для получения более подробной информации смотрите Ускорение получения данных.

Синтаксис для этой функции приведен ниже:

ISMEMOFETCHED(cFieldName | nFieldNumber [, nWorkArea | cTableAlias ])

Функция ISMEMOFETCHED() возвратит True (.T.) когда мемо-поля выбраны или используются локальные данные. ISMEMOFETCHED() возвратит NULL если указатель записи установлен в начало курсора или после последней записи.

Для получения более подробной информации смотрите описание функции ISMEMOFETCHED().

Expand imageПрекращение выборки из ADO

В Visual FoxPro у вас теперь имеется возможность прекратить длинную выборку из ADO, путем нажатия клавиши ESC.

Expand imageПоддержка имен длинного типа

Visual FoxPro поддерживает длинный тип имен с перечисленными функциями, командами и свойствами.

В приведенной ниже таблице перечислены типы данных как с короткими, так и длинными именами.

Тип данных Длинный тип имени Короткий тип имени

Character

Char, Character

C

Date

Date

D

DateTime

Datetime

T

Numeric

Num, Numeric

N

Floating

Float

F

Integer

Int, Integer

I

Double

Double

B

Currency

Currency

Y

Logical

Logical

L

Memo

Memo

M

General

General

G

Picture

Picture

P

Varchar

Varchar

V

Varbinary

Varbinary

Q

Blob

Blob

W

Visual FoxPro позволяет использование сомнительных длинных имен типов совместно с командами ALTER TABLE, CREATE CURSOR, CREATE TABLE и CREATE FROM. Если указанное длинное имя типа не распонается, Visual FoxPro обрежет указанное имя до одного, первого символа.

Expand imageПоддержка транзакций для свободных таблиц и курсоров

В предыдущих версиях Visual FoxPro, транзакции, использующие команду BEGIN TRANSACTION поддерживались только для локальных и отдаленных данных из баз данных. Транзакции, вовлекающие в процесс свободные таблицы и курсоры теперь поддерживаются через использование фукнций MAKETRANSACTABLE() и ISTRANSACTABLE(). Для получения более подробной информации смотрите описание функций MAKETRANSACTABLE( ) и ISTRANSACTABLE( ).

Expand imageУказывайте кодовую страницу, когда используете команду CREATE TABLE или CREATE CURSOR

Вы можете указать кодовую страницу с помощью включения опции CODEPAGE в команды CREATE CURSOR или CREATE TABLE.

Когда опция CODEPAGE указана, новая таблица или курсор будут иметь кодовую страницу, указанную в параметре nCodePage. В случае, если указанная вами кодовая страница не поддерживается, то будет сгенерирована ошибка с номером 1914, "Code page number is invalid".

В приведенном ниже примере создается таблица и отображается ее кодовая страница:

  CopyCode imageСкопировать код
CREATE TABLE Sales CODEPAGE=1251 (OrderID I, CustID I, OrderAmt Y(4))

? CPDBF( )

Для получения более подробной информации смотрите описания CREATE CURSOR - SQL, CREATE TABLE - SQL и Кодовые страницы, поддерживаемые Visual FoxPro.

Expand imageПреобразование типов данных Character  и Memo при использовании команды ALTER TABLE

Visual FoxPro теперь поддерживает автоматическое преобразование из исмвольного типа данных в данные типа мемо, без потери содержащихся в записях данных, при использовании команды ALTER TABLE с опцией ALTER COLUMN. Это преобразование также поддерживается и в случае, когда производятся структурые изменения с помощью табличного дизайнера. Для получения более подробной информации смотрите описание команды ALTER TABLE - SQL.

Expand imageКоманда BLANK может инициализировать заполнение записей значениями по умолчанию

Вы можете инициализировать поля в текущей записи в их значения по умолчанию, хранящиеся в контейнере базы данных с помощью опции DEFAULT [AUTOINC], когда запись очищается с помощью команды BLANK. Для получения более подробной информации смотрите описание команды BLANK.

Expand imageКоманда FLUSH явно записывает данные на диск

Visual FoxPro теперь включает опции и параметры для команды FLUSH и функции FFLUSH, так что вы можете явно сохранить произвденные вами изменения во всех открытых таблицах и индексах. Кроме того, мы можете сохранить изменения в указанной таблице, путем указания рабочей области, псевдоимени таблицы или пути и имени файла. Для получения более подробной информации смотрите описания команды FLUSH и функции FFLUSH( ).

Expand imageЗаполнение массива псевдоименами, используемыми определенной таблицей

Новый параметр cTableName для функции AUSED( ) делает возможным фильртровать создаваемый массив, заполняя его только псевдоименами для указанной таблицы.

AUSED(ArrayName [, nDataSessionNumber [, cTableName ]])

Параметр cTableName акцептирует следующие форматы для указания таблицы, начиная с наивысшего и кончая низщим приоритетами .

  • DatabaseName!TableName или DatabaseName!ViewName

  • Path\DatabaseName!TableName или Path\DatabaseName!ViewName

  • Определенное в DBC имя таблицы или представления в текущем контейнере базы данных в текущей сессии данных

  • Простое или полное имя файла

Для получения более подробной информации смотрите описание функции AUSED( ).

Expand imageПолучить последнее значение автоувеличения с помощью функции GETAUTOINCVALUE( )

Вы можете использовать новую функцию GETAUTOINCVALUE( ) для возврата последнего значения, сгенерированного для поля с автоувеличением внутри сессии данных. Для получения более подробной информации смотрите описание функции GETAUTOINCVALUE().

Expand imageSET TABLEPROMPT управляет запросом выбора таблицы

Новая команда SET TABLEPROMPT управляет поведение Visual FoxPro - будет ли пользователь запрашиваться с целью выбора таблицы с помощью диалогового блока Open (Visual FoxPro) для выбора таблицы, когда она указана, но не может быть найдена, в такой команде, как SELECT - SQL Command. Для получения более подробной информации смотрите описание команды SET TABLEPROMPT.

Expand imageИспользуйте SET VARCHARMAPPING для управления разметкой набора результата запроса

Для запросов, таких как выполняемый командой SELECT - SQL Command, символьные данные очень часто обрабатываются  использованием функций и выражений Visual FoxPro. Так как длина результирующего поля может быть важной для определенных целей, то удобно разметить эти данные типа Character в данные типа Varchar в выходном наборе запроса. Команда SET VARCHARMAPPING управляет поведением Visua FoxPro - будут ли символьные типы данных размечаться в типы Character или Varchar. Для получения более подробной информации смотрите описание команды SET VARCHARMAPPING.

Expand imageРаскрытый SET TABLEVALIDATE

Когда заголовок таблицы заблокирован на время процесса контроля, то попытка открыть таблицу, например, с помощью команды USE сгенерирует ошибку "File is in use - Файл в использовании  (Ошибка 3)." If the table header cannot be locked for a table open operation, you can suppress this message by setting the third bit for the SET TABLEVALIDATE command. You must also set the first bit to validate the record count when the table opens. Therefore, you need to set the SET TABLEVALIDATE command to a value of 5. Also, a fourth bit option (value of 8) is available for Insert operations which checks the table header before the appended record is saved to disk and the table header is modified.

Для получения более подробной информации смотрите описание команды SET TABLEVALIDATE.

Expand imageSET REFRESH Can Specify Faster Refresh Rates

You can specify fractions of a second for the nSeconds2 parameter to a minimum of 0.001 seconds. You can also specify the following values for the optional second parameter:

  • -1 - Always read data from a disk.

  • 0 - Always use data in memory buffer but do not refresh buffer.

The Table refresh interval check box on the Data tab of the Options dialog box now also accepts fractional values.

Для получения более подробной информации смотрите описание команды SET REFRESH и диалогового блока Закладка Data, диалоговый блок Options.

Expand imageSET REFRESH Can Differentiate Values for Each Cursor

You can use the new Refresh property with the CURSORGETPROP( ) function to differentiate the SET REFRESH values for individual cursors. The default setting is -2, which is a global value. This value is not available with the SET REFRESH command.

The Refresh property is available at the Data Session and Cursor level. The default setting for a Data Session level is -2 and the default value for a Cursor level is the current session's level setting. If the global level setting is set to 0, the Cursor level setting is ignored.

If a table is not currently selected and an alias is not specified, Error 52, "No table is open in the current work area," is generated.

Для получения более подробной информации смотрите описание свойства Refresh в описании команды CURSORGETPROP( ).

Expand imageSET( ) Determines SET REPROCESS Command Settings

You can now use the following syntax with the SET( ) function to determine how the SET REPROCESS command was declared.

SET Command Value Returned

REPROCESS, 2

Current session setting type (0 - attempts, 1 - seconds)

REPROCESS, 3

System session setting type (0 - attempts, 1 - seconds)

Для получения более подробной информации смотрите описание функции SET() и команды SET REPROCESS.

Expand imageLog Output from SYS(3054) Using SYS(3092)

You can use the new SYS(3092) function in conjunction with SYS(3054) to record the resulting output to a file.

SYS( 3092 [, cFileName [, lAdditive ]])

The cFileName parameter specifies the file to echo the SYS(3054) output to. Sending an empty string to cFileName will deactivate output recording to the file.

The default value for lAdditive is False (.F.). This specifies that new output will overwrite the previous contents of the specified file. To append new output to the specified file, set lAdditive to True (.T.).

SYS(3092) returns the name of the current echo file if it is active; otherwise, it returns an empty string.

SYS(3054) and SYS(3092) are global settings — in a multithreaded runtime they are scoped to a thread. Each function can be changed independently from each other.

These functions are not available in the Visual FoxPro OLE DB Provider.

Для получения более подробной информации смотрите описание  SYS(3054) - Rushmore Query Optimization Level и SYS(3092) - Output Rushmore Query Optimization Level.

Expand imagePurge Cached Memory for Specific Work Area Using SYS(1104)

You can optionally specify the alias or work area of a specified table or cursor for which cached memory is purged. Для получения более подробной информации смотрите описание  SYS(1104) - Purge Memory Cache.

Expand imageNew Table Types for SYS(2029)

The SYS(2029) function returns new values for tables that contain Autoinc, Varchar, Varbinary or Blob fields. Для получения более подробной информации смотрите описание  SYS(2029) - Table Type.

Expand imageMap Remote Unicode Data to ANSI Using SYS(987)

Use SYS(987) to map remote Unicode data retrieved through SQL pass-through or remote views to ANSI. This function can be used to retrieve remote Varchar data as ANSI for use with Memo fields. This setting is a global setting across all data sessions so should be used with care. Для получения более подробной информации смотрите описание  SYS(987) - Map Remote Data to ANSI.

Expand imageMemo and Field tips in a BROWSE or Grid

When the mouse pointer is positioned over a Memo field cell in a Browse window or Grid control, a Memo Tip window displays the contents of the Memo field.

For other field types, positioning the mouse pointer over the field displays the field contents in a Field Tip window when the field is sized smaller than its contents.

Memo Tip windows display no more than 4 kilobytes of text, and are not displayed for binary data. A Memo Tip window is displayed until the mouse pointer is moved from the Memo field. The _TOOLTIPTIMEOUT System Variable determines how long a Field Tip window is displayed.

You can disable Memo Tips by setting the _SCREEN ShowTips Property to False (.F.).

Memo and Field Tips will also be displayed for Grid controls if both _SCREEN and the form's ShowTips property are set to True (.T.). Additionally, the ToolTipText Property for the field's grid column Textbox control must contain an empty string.

Expand imageУказывайте кодовые страницы

Вы можете указывать кодовую страницу, используемую для декодирования данных при разборке XML и для кодировки данных в UTF-8, когда генерируется XML. Доступны перечисленные ниже изменения языка:

  • параметра nCodePage

    Для указания кодовой страницы вы можете использовать параметр nCodePage в следующих методах XMLToTable:

      CopyCode imageСкопировать код
    XMLTable.ToCursor ( [ lAppend [, cAlias [, nCodePage ]]] )
    XMLTable.ChangesToCursor( [ cAlias [, lIncludeUnchangedData [, nCodePage ]]] )
    XMLTable.ApplyDiffgram( [ cAlias [, oCursorAdapter [, lPreserveChanges [, nCodePage ]]]] )
  • Свойства CodePage и UseCodePage

    Используйте свйоства CodePage и UseCodePage для указания кодовых страницы, когда вы используете перечисленные ниже классы:

      CopyCode imageСкопировать код
    XMLAdapter.CodePage = nValue
    XMLTable.CodePage = nValue
    XMLField.CodePage = nValue
  • Флаг 32768

    Флаг 32768 доступен для перечисленных ниже функций и классов:

      CopyCode imageСкопировать код
    CursorAdaptor.Flags = nCodePage
    XMLTOCURSOR( eExpression | cXMLFile [, cCursorName [, nFlags ]])
    CURSORTOXML(nWorkArea | cTableAlias, cOutput [, nOutputFormat [, nFlags [, nRecords [, cSchemaName [, cSchemaLocation [, cNameSpace ]]]]]])
    XMLUPDATEGRAM( [ cAliasList [, nFlags [, cSchemaLocation]]])

    The nCodePage parameter must match a recognized Visual FoxPro code page.

Для получения более подробной информации смотрите описание  Кодовые страницы поддерживаемые Visual FoxPro.

Expand imageСвойство MapVarchar размечает данные в типы данных Varchar, Varbinary и Blob

С классами CursorAdapter и XMLAdapter вы можете использовать свойство MapVarchar pдля разметки в тип данных Varchar. Для разметки данных в типы данных Varbinary и Blob вы можете использовать свойство MapBinary.

Фукнция XMLTOCURSOR() содержит несколько новых флагов для поддержки разметки Char и base64Binary типов полей XML в новые типы данных Fox.

Для получения более подробной информации смотрите описание свойств MapVarchary и MapBinary.

Expand imageОбработка конфликта проверок со свойствами для класса CursorAdapter

Вы можете лучше обрабатывать конфликты,  по время проведения операций перезапаси и удаления с помощью команд, указанных в качестве значений свойств UpdateCmd и DeleteCmd объектов CursorAdapter, с помощью новых свойств ConflictCheckType и ConflictCheckCmd  объектов CursorAdapter.

Вы можете использовать ConflictCheckType для указания - как обслуживать проверку конфликта по время операций перезаписи и удаления. Когда ConflictCheckType установлен в значение 4, вы можете использовать ConflictCheckCmd, для указания пользовательской команды для добавления в конец команд в свойствах UpdateCmd и DeleteCmd.

NoteЗамечание

Visual FoxPro 8.0 Service Pack 1 включает в поставку свойства ConflictCheckType и ConflictCheckCmd.

Для получения более подробной информации смотрите описание свойств ConflictCheckType and ConflictCheckCmd.

Expand imageУлучшенное обслуживание DataEnvironment со свойствами UseCursorSchema и NoData

Вы можете указать установку по умолчанию для вызовов метода CursorFill, произведенных без первых двух параметров, с помощью установки этих свойств. Для получения более подробной информации смотрите описание свойств UseCursorSchema and NoData.

Expand imageПоддержка поля типа Timestamp

Новое свойство TimestampFieldList позволяет вам указать список полей timestamp курсора, созданного объектом CursorAdapter. Для получения более подробной информации смотрите описание свойства TimestampFieldList.

Expand imageПоддержка Auto-Refresh

Имеется ряд сценариев, в которых вы можете пожелать иметь обновляемые данные с удаленного источника данных после того, как произойдут операции Insert/Update. Это включает в себя перечисленные ниже сценарии:

  • Таблица имеет поле с автоувеличением, которое, кроме того, используется как первичный ключ.

  • Таблица имеет поле типа timestamp, и такое поле должно быть обновляемым из базы данных после каждой операции Insert/Update для того, что позволить успешные последовательные обновления записи, когда WhereType=4 (key и timestamp).

  • Таблица содержит некоторые поля, которые имеют предустановленные значения DEFAULT или триггера, определенные таким образом, что изменения произошли.

Перечисленные ниже свойства добавлены в класс CursorAdapter для поддержки Auto-Refresh:

Property Description

InsertCmdRefreshFieldList

Список полей для обновления после исполнения команды Insert.

InsertCmdRefreshCmd

Указывает команду обновления записи после исполнения команды Insert.

InsertCmdRefreshKeyFieldList

Список ключевых полей для обновления в записи после исполнения команды Insert.

UpdateCmdRefreshFieldList

Список полей для обновления поле исполнения команды Update.

UpdateCmdRefreshCmd

Указывает команду для обновления записи после исполнения команды Update.

UpdateCmdRefreshKeyFieldList

Список ключевых полей для обновления записи после исполнения команды Update.

RefreshTimestamp

Разрешает автоматическоу обновление для полей в списке TimestampFieldList в течение операций Insert/Update.

Для получения более подробной информации о том, как Visual FoxPro обновляет отдаленные данные с помощью CursorAdapter, смотрите Data Access Management Using CursorAdapters. Кроме того, смотрите описание свойств InsertCmdRefreshCmd, InsertCmdRefreshFieldList, InsertCmdRefreshKeyFieldList, UpdateCmdRefreshCmd, UpdateCmdRefreshFieldList, UpdateCmdRefreshKeyFieldList и RefreshTimeStamp.

Expand imageОбновление записи по требованию

В Visual FoxPro 8.0, функция REFRESH() предоставляет фнукциональнсть обновления записи по требованию для локальных и удаленных представлений, однако она не поддерживает такую функциональность для CursorAdapter. Visual FoxPro 9.0 расширил поддержку REFRESH() для CursorAdapter и предоставил несколько дополнительных возможностей:

Member Описание

Метод RecordRefresh

Обновляет текущие значения полей для целевых записей. Используйте функцию CURVAL() для определения текущих значений полей.

Событие BeforeRecordRefresh

Происходит непосредственно перед исполнением метода RecordRefresh.

Событие AfterRecordRefresh

Происходит незамедлительно после исполнения метода RecordRefresh.

Свойство RefreshCmdDataSourceType

Указывает тип источника данных, который будет использован в методе RecordRefresh.

Свойство RefreshCmdDataSource

Указывает источник данных, который будет использован в методе RecordRefresh.

Свойство RefreshIgnoreFieldList

Списко игнорируемых полей для операции RecordRefresh

Свойство RefreshCmd

Указывает команду для обновления строк, когда исполняется метод RecordRefresh.

Свойство RefreshAlias

Указывает псевдоимя read-only курсора, используемого как цель для операции обновления.

Для получения более подробной информации смотрите описания метода RecordRefresh, события BeforeRecordRefresh, события AfterRecordRefresh, свойства RefreshCmdDataSourceType, свойства RefreshCmdDataSource, свойства RefreshIgnoreFieldList, свойства RefreshCmd и свойства RefreshAlias.

Expand imageЗадержанная выборка мемо-полей

Класс CursorAdapter имеет свойство FetchMemo, которое при  установке в значение False (.F.) в Visual FoxPro 9.0 помещает курсор е режим задежанной выборки мемо-полей (Delayed Memo Fetch mode) схожий с удаленными представлениями. Задержанная выборка мемо-полей предотвращает мемо-поля от ипользования в выборке при  использовании методов CursorFill или CursorRefresh. Попытка выбрать содержание Memo-поля совершается, когда приложение пытается получить доступ к значению. Описанные ниже расширения класса CursorAdapter предоставляют поддержку для задержанной выборки мемо-полей:

Member Описание

Метод DelayedMemoFetch

Производит задержанную выборку мемо-поля целевой записи в курсоре объекта CursorAdapter.

Свойство FetchMemoDataSourceType

Указывает тип источника данных, используемого для метода DelayedMemoFetch.

Свойство FetchMemoDataSource

Указывает источника данных, используемый для метода DelayedMemoFetch.

Свойство FetchMemoCmdList

Указывает список имен мемо-полей и связанные с ними команды выборки.

Для получения более подробной информации смотрите описания метода DelayedMemoFetch, свойства FetchMemoDataSourceType, свойства FetchMemoDataSource и свойства FetchMemoCmdList.

Expand imageСвойство UseTransactions

Новое свойство UseTransactions указывает - должен ли CursorAdapter использовать транзации при посылке команд Insert, Update или Delete через ADO или ODBC. Для получения более подробной информации смотрите описание свойства  UseTransactions.

Expand imageDEFAULT and CHECK Constraints Respected

В Visual FoxPro 9.0, значения DEFAULT, а также CHECK constraints уровней поля и таблицы, поддерживаются для XML, Native, ADO и ODBC источников данных. В Visual FoxPro 8.0 они поддерживались только для источников данных типа XML. Для того, чтобы значения DEFAULT и CHECK constraints были применены к курсору, вызовите метод CursorFill с параметром lUseSchema установленным в True (.T.). Для получения более подробной информации смотрите описание свойства CursorSchema.

Expand imageПреобразование типов удаленных данных в логичеичкие типы данных

Когда вы перемещаете данные между удаленным серевером и Visual FoxPro, Visual FoxPro  использует типы данныъ  ODBC или ADO для разметки удаленных типов данных в локльные типы данных Visual FoxPro. В Visual FoxPro 9.0, определенные типы данных ODBC и ADO могут быть теперь рамзечены в логические типы данных data в удаленных представлениях и объекте CursorAdapter. Для получения более подробной информации смотрите описание Управление преобразование типов данных.

Expand imageСвойство ADOCodePage

При работе с источниками данных типа ADO с вашим CursorAdapter, вы можете пожелать указать кодовую страницу для использования трансляции символьных данных. Новое свойство ADOCodePage позволяет вам указать эту кодовую страницу. Для получения более подробной информации смотрите описание свойства ADOCodePage.

Expand imageЧтение и записов из/во XML-документов со вложениями

Вы можете читать из XML документов и записывать в них данные из ваших реляционных баз данных, используя вложенияе  для обработки отношений между таблицами. Вы можете выполнить это, используя свойство RespectNesting объекта класса XMLAdapter. Класс XMLTable имеет методы  Nest Method, Unnest Method, а также перечисленные ниже свойства для обслуживания вложений.

Для получения более подробной информации смотрите описания классов XMLAdapter и XMLTable.

Expand imageМетод LoadXML может акцептировать любые XML-документы

Метод LoadXML акцептирует любые XML-документа с действительной схемой. Ранее, методж требовал, чтобы схема следовала формату сгенерированного Visual Studio набора данных (Visual Studio generated dataset). Когда вы используете метод LoadXML, для чтения XML-документа со схемой, отличающейся от Visual Studio generated dataset, свойства XMLName и XMLPrefix объекта XMLAdapter устанавливаются в пустое значение. Значение свойства XMLNamespace становится равным значению целевого аттрибута Namespace для узла схемыa, и каждый XML элемент становится элементом составного типа (complexType) и размечается к объекту XMLTable. Свойство XMLNamespace устанавливается в значение, определяемое namespaceURI элемента.

Если вы установите свойство XMLAdapter RespectNesting в True (.T.), декларация элемента верхнего уровня (в иерархии) игнорируется, если на него имеется ссылка из другого составного элемента. В таком случае, объект XMLTable ссылаемого элемента вкладывается в элемент XMLTable, элемента, которые ссылается на него.

Для получения более подробной информации смотрите описание метода LoadXML.

Expand imageXPath выражения могут иметь доступ к сложным XML документам

Вы можете использовать выражения XPath для доступа к комплексным XML-документам, а также новые свойства для чтения узлов документа. Напрмеир, Вы можете пожелать фильтровать узлы записей, выосстанавливать отношения, основанные на внешних ключевых полях, использовать текст элемента, как данные для поля или получить доступ к XML, которые использует  множественные пространства имен XML. Для возможности читать XML на уровнях XMLAdapter, XMLTable или XMLField вам предоставленые следующие свойства.

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

Например, еси вы используете выражение XPath в свойстве XMLName объекта XMLAdapter, чтение начнетася с первого узла

Для чтения Класс Узел контекста

С первого найденного узла XML:

XMLAdapter

IXMLDOMElement свойство

Всех найденных узлов XML  и использования каждого узла, как отдельной записи:

XMLTable

XMLAdapter объект

С первого найденного XML узла и использование его текста, как значения поля:

XMLField

XMLTable объект

Приведенные ниже методы не поддерживают использование выражений XPath в свойстве XMLName:

  • Методы ApplyDiffgram и ChangesToCursor не поддерживают выражения для объектов XMLAdapter и XMLTable.

  • Метод ToCursor не поддерживает выражение XPath для объекта XMLAdapter, когда свойство IsDiffgram установлено в True (.T.).

  • Метод ToXML не поддерживает выражения XPath для объектов XMLAdapterXMLTable и игнорирует объекты XMLField, которые используют выражения XPath.

Для получения более подробной информации о выражениях XPath, смотрите справочное руководство по XPath в Microsoft Core XML Services (MSXML) 4.0 SDK или в MSDN библиотеке по адресу http://msdn.microsoft.com/library.

Expand imageФункции преобразования курсоров в XML и обратно

В OLE DB Provider для Visual FoxPro включена поддержка перечисленных ниже функцйи:

При использовании OLE DB Provider для Visual FoxPro имейте ввиду, что в функциях CURSORTOXML( ), XMLTOCURSOR( ) и XMLUPDATEGRAM( ) не поддерживается свойство _VFP VFPXMLProg вследствие того, что в OLE DB Provider не поддерживается системная переменная _VFP.

Expand imageВ Visual FoxPro OLE DB поддерживается EXECSCRIPT

Вы можете использовать функцию EXECSCRIPT() при работе с Visual FoxPro OLE DB Provider. Для получения более подробной информации смотрите описание функции EXECSCRIPT().

Expand imageВозврат Rowset из курсора в Visual FoxPro OLE DB Provider

Вы можете использовать новые функции SETRESULTSET( ), GETRESULTSET( ) и CLEARRESULTSET( ) для установка флажка маркера на курсор или таблицу, открытые с помощью Visual FoxPro OLE DB Provider, получить рабочую область помеченного курсора и снять флажок маркера с помеченного курсора. Путем маркировки курсора или таблицы мы можете получить rowset, который создается из маркированного курсора или таблицы контейнера базы данных хранимой процедурой, когда OLE DB Provider завершает выполнение команды.

Для получения более подробной информации смотрите описание функций SETRESULTSET(), GETRESULTSET() и CLEARRESULTSET().

Expand image Смотрите также