Описание слайда:
Особенности использования различных типов источников данных в CA-классе Свойства: Tables, KeyFieldList, UpdateNameList, UpdatableFieldList обеспечивают настройку обновления данных (могут быть настроены на закладке [Auto-Update] в CA Builder). Если эти свойства неопределенны, то предполагается указание явного механизма обновления данных, например используя SQL-команды в качестве свойств: UpdateCmd, InsertCmd, DeleteCmd при соответствующих *CmdDataSource и *CmdDataSourceType (по кнопке Advanced… на закладке [Auto-Update] в CA Builder) Значение свойства DataSourceType определяет тип источника данных. Возможные значения строки: ‘ODBC’, ‘ADO’, ‘XML’, ‘Native’. Native – означает, что источниками данных являются VFP-таблицы. Единственно что здесь нужно хорошо осознавать, - это то, что мы обращаемся не к VFP-таблицам непосредственно (чрез открытие её по команде USE), а к буферизованным VFP-курсорам, являющимся результатами выполнения SQL-команд к соответствующим VFP-таблицам. Как следствие в частности, имя полученного курсора (CA.Alias) не может совпадать с именем VFP-тблицы (в команде SQL-SELECT … FROM tblName) ODBC – внешним источник является совместимые с Open Database Connectivity приложения, доступ к данным которых, обеспечивается через соответствующие ODBC driver-ы Значением свойства CA.DataSource в этом случае, является числовое значение, возвращаемые функцией SQLSTRINGCONNECT() или SQLCONNECT() Если к примеру, для получение данных с сервера используется хранимая процедура, то значением свойства SelectCmd может быть команда обращения к такой процедуре ADO – определяет, что внешним источником является Microsoft® ActiveX® Data Objects (ADO). Это может быть совместимое с MS OLE DB Provider приложение, обеспечивающее стандартный интерфейс для работы с данными, например SQL Server (SQLOLEDB), либо приложение совместимое с Microsoft OLE DB Provider for ODBC (MSDASQL). В этом случае, в качестве значения свойства CA.DataSource принимается объект ADODB.Recordset Т.к. объект ADODB.Recordset не имеет возможности работать с параметрами, то по умолчанию метод CA.CursorFill() неспособен обрабатывать команды, содержащие параметры. Поэтому, в случае параметризованных запросов к данным, вам следует переопределить метод CA.CursorFill() так, чтобы создать дополнительный объект ADODB.Command и передать его чрез параметр методу CursorFill(), тем самым обеспечить обработку параметров в запросе. Было обнаружено, что один общий ADODB.Recordset не способен обрабатывать несколько экземпляров CA-классов. Т.е. не следует пытаться одним DataSource, помещённым например в DataEnvironment пытаться обслужить несколько CA-классов. XML – означает, что внешними источниками являются XML-данные (Extensible Markup Language). В этом случае свойство CA.SelectCmd должно быть: либо строкой-результатом работы функции CURSORTOXML(), (т.е. корректной строкой XML-данных для получения VFP-курсора применением функции XMLTOCURSOR()) либо строкой, вычисляемой до объекта XMLTable, например «this.oXmlAdapter.Tables(1)» Если определены свойства: Tables, KeyFieldList, UpdateNameList, UpdatableFieldList и значения свойств UpdateCmdDataSourceType, InsertCmdDataSourceType, и DeleteCmdDataSourceType установлены в ‘XML’, то свойство CA.UpdateGram на момент сохранения изменений содержит XML-схему изменений в формате, принятом для SQLXML 3.0, а свойства: UpdateCmd, InsertCmd и DeleteCmd могут быть строками, вычисляющимися до методов, к которым следует обратиться при возникновении соответствующих событий.