Отражает изменения, сделанные в буфферированной таблице или курсоре, в XML UpdateGram и возвращает символьную строку, содержащую UpdateGram.
XML UpdateGram представляет условия "before" и "after" в изменной части таблицы или курсора Visual FoxPro. Через дополнительные процессы вы можете использовать UpdateGram для передачи данных, представленных документом XML UpdateGram.
Замечание: |
---|
Для использования функции XMLUPDATEGRAM( ), вы должны использовать команду SET MULTILOCKS ON и разрешить буфферирование таблицы. |
Совет: |
---|
Перед вызовом функции XMLUPDATEGRAM( ), вы должны указать список ключевых полей с помощью функции CURSORSETPROP( ) в свойстве KeyFieldList для существующих курсоров и таблиц. Если выне укажите ключевые поля, Если вы не укажите ключевых полей, оба представления - "before" и "after" будут содержать все поля таблицы. Если вы укажете одно или более ключевых полей, то только эти поля появятся в секции - before. |
XMLUPDATEGRAM( [ cAliasList [, nFlags [, cSchemaLocation]]]) |
Параметры
- cAliasList
- Указывает разделенный запятыми список открытых таблиц или курсоров, перечисленных либо по имени, либо по номерам рабочих областей указанных в любой комбинации, для включения в XML UpdateGram. Если вы не определите значения для параметра или укажете в качества параметра cAliasList пустую строку ("") , Visual FoxPro будет использовать все открытые таблицы и курсоры в текущей сессии данных, которые содержат буфферированные изменения.
- nFlags
- Определяет - будет ли возвращен форматированный файл или нет. В приведенной ниже таблицы перечислены кумулятивные флажки для nFlags.
nFlag Bit Описание вывода 0
0000
(По умолчанию) Использовать XML в кодировке UTF-8.
1
0001
Использовать неформатированный, например, длинную строку, содержащую XML.
2
0010
Включить пустые элементы с обоими - открывающими и закрывающими тэгами, например, <cc04><cc04/>.
4
0100
Сохранять пустые пространства в полях.
8
1000
Упаковывать мемо-поля в секциях CDATA.
16
10000
Кодировка вывода (Output encoding).
32
100000
Кодировка вывода (Output encoding).
32768
none
Указывает, что должна быть использована кодовая страница.
Замечание: При использовани кодировки UTF-8 (по умолчанию), декларация XML не содержит пары Encoding= attribute (то есть, в случае, если мы не указали аттрибута, то это означает что используется кодировка UTF-8). Замечание: Флажки кодировок устанавливаются комбинацией битов 4 и 5 (0010000). Флажок кодировки (Encoding flag) Биты 4 и 5 Описание +0
00
(По умолчанию) Windows 1252
+16
01
Установить аттрибут кодировки в кодовую страницу курсора.
+32
10
Установить аттрибут кодировки в UTF-8 (без трансляции символов).
+48
11
Установить аттрибут кодировки в UTF-8 и транслировать двух-байтные символы в UTF-8.
- cSchemaLocation
- Указывает имя и местоположение схемы разметки, если она существует.
Замечание: Вы должны представить схему разметки. mySchema.xsd
параметру cSchemaLocation, в таком случае созданный UpdateGram содержит аттрибут схемы разметки в том виде, в каком он показан в XML документе, приведенном ниже:Скопировать код <ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync mapping-schema="mySchema.xsd" >
<updg:before>
Возвращаемое значение
Символьный тип данных. XMLUPDATEGRAM( ) возвращает символьную строку, содержащую XML UpdateGram.
Примечания
Вы можете использовать XMLUPDATEGRAM( ) с OLE DB Provider для Visual FoxPro. Однако, свойство _VFP VFPXMLProgID не поддерживается, так как системная переменная _VFP не поддерживается в OLE DB Provider.
Замечание: |
---|
Для использования Visual FoxPro OLE DB Provider совместно с XMLUPDATEGRAM( ), вы должны проинсталлировать MSXML 3.0 на компьютер, на котором имеется OLE DB Provider. |
SQL Server и Visual Studio поддерживают формат DiffGram для обновления XML. Однако, SQL XML требует схемы разметки для поддержки этого формата. Поэтому, XMLUPDATEGRAM( ) не поддерживает такой формат.
Во избежание возможных ошибок, генерируемых XMLUPDATEGRAM( ) на таблицах, содержащих поля Memo или General, используйте функцию CURSORSETPROP( ). Приведенный ниже пример показывает, как включить мемо поля в XML UpdateGram путем установки свойстав KeyFieldList с помощью CURSORSETPROP( ):
Скопировать код | |
---|---|
SET MULTILOCKS ON |
Для записи данных мемо-поля, включенных в XML UpdateGram на SQL Server, вы должны использовать детальную схему на SQL Server и ссылку на схему в XML UpdateGram.
В противоложность функции CURSORTOXML( ), XMLUPDATEGRAM( ) не принимает во внимание установки SET FIELDS и читает непосредственно из подложенного курсора. Для изменения структуры таблицы перед вызовом функции XMLUPDATEGRAM( ), вы должны скопировать данные в новый курсор. Например, для изменения поля типа Numeric в поле типа Currency, приведенный ниже пример использует предложение SQL SELECT для создания нового курсора и использует этот курсор с XMLUPDATEGRAM( ). Пример берет поле Total_Price field как поле currency, разрешает буфферирование с помощью CURSORSETPROP( ), добавляет налог с продаж с помощью команды REPLACE и создает XML UpdateGram, используя функцию XMLUPDATEGRAM( ).
Скопировать код | |
---|---|
SELECT OrderID, CustID, NTOM(Total_Price) as Total_Price; |
При использовании флажка 32768, флажки 16 и 32 установок могут определять - какая кодовая страница будет применена в зависимости от типа данных, записанных вами в XML. Приведенная ниже таблица показывает возможные комбинации установок и какая кодовая страница будет применена в зависимости от примененной комбинации.
Для XML документов, записанных с установленным флажком 32768, применяются приведенные ниже кодовые страницы.
Flag 16 |
Flag 32 |
Флажок 32768 установлен |
Не установлен |
Не установлен |
XML документы: Window-1252. Unicode данные: code page 1252. Символьные данные: кодовая страница по умолчанию, если поле не маркировано как NOCPTRANS. (binary) |
True (.T) |
Не установлен |
XML документы: Плюс свойство CodePage курсора. Если свойство CodePage объекта XMLField отличается (больше) от нуля (0) и значение не соответствует кодовой странице курсора, то генерируется ошибка. Unicode данные: свойство Code page объекта курсор. Символьные данные: нет. Вместо этого используются текущие данные из таблиц Visual FoxPro (.dbf). |
Не установлен |
Установлен |
XML документы: UTF-8 code page. Unicode данные: UTF-8 code page. Символьные данные: кодовая страница по умолчанию, если поле не маркировано как NOCPTRANS, в этом случае не производится дополнительной трансляции символов в UTF-8. |
Установлен |
Установлен |
XML документы: UTF-8 code page. Unicode данные: UTF-8 code page. Символьные данные: кодовая страница по умолчанию, если поле не маркировано как NOCPTRANS, в этом случае, они транслируются в UTF-8 используя кодовую страницу, определяемую текущей установкой SYS(3005). |
Для XML документов, записанных без установки флажка 32768, применяются приведенные ниже кодовые страницы.
Flag 16 |
Flag 32 |
Флажок 32768 не используется |
Не установлен |
Не установлен |
XML документы: Window-1252. Unicode данные: code page 1252. Символьные данные: кодовая страница по умолчанию, если поле не маркировано как NOCPTRANS. |
True (.T) |
Не установлен |
XML документы: свойство CodePage курсора Символьные данные: нет. Вместо этого используются текущие данные из таблиц Visual FoxPro (.dbf). Unicode данные: свойство кодовой страницы объекта курсора. |
Не установлен |
Установлен |
XML документы: UTF-8 code page. Unicode данные: UTF-8 code page. Символьные данные: кодовая страница по умолчанию, если поле не маркировано как NOCPTRANS, в этом случае не производится дополнительной трансляции символов в UTF-8. |
Установлен |
Установлен |
XML документы: UTF-8 code page. Unicode данные: UTF-8 code page. Символьные данные: кодовая страница по умолчанию, если поле не маркировано как NOCPTRANS, в этом случае, они транслируются в UTF-8 используя кодовую страницу, определяемую текущей установкой SYS(3005). |
Для получения подробной информации о преобразовании XML в Visual FoxPro данные, смотри статью Преобразования между XML и данными Visual FoxPro.
Смотри также
Прочие ресурсы
Функция CURSORTOXML( )Функция XMLTOCURSOR( )
Преобразования между XML и данными Visual FoxPro
XML данные в Visual FoxPro
Функции