Вы можете извлекать данные, используя различные типы соединений с источниками данных. Вы можете, затем, создать курсор или курсоры-адаптерыVisual FoxPro используя извлеченные данные. Курсор-адаптеры могут извлекать данные из широкого ряда источников данных, по сравнению с традиционными курсорами.

Эта репетиция объясняет как выстроить окружение данных для формы Visual FoxPro путем конфигурирования источника данных и, при необходимости, типа соединения, что применяется ко всем курсорам-адаптерам в окружении данных с помощью построителя DataEnvironment Builder. Вы можете, затем, создать курсоры в окружении данных, которые имеют конкретные свойства для обращения к данным, с помошью построителя CursorAdapter Builder.

Эта репетиция содержит приведенные ниже секции:

Для получения более подробной информации о курсорах-адаптерах смотрите описания Управление доступом к данным с помощью курсоров-адаптеров, Класс CursorAdapter, Построитель DataEnvironment Builder и Построитель CursorAdapter Builder.

Expand imageПредварительные условия

Для этой репетиции необходимо приведенное ниже:

  • Источники данных, использующие приведенные ниже типы соединения:

    • Native   

      Используйте образцовую базу Northwind, включенную в поставку Visual FoxPro и размещенную в каталоге ...\Samples\Northwind.

    • ODBC или ADO   

      Установите доступ к локальному или удаленному SQL серверу (SQL Server 7 или 2000) с установленной на нем базой данной Northwind.

    • XML   

      Используйте файл GetCustomers.XML DataSet включенный в поставку Visual FoxPro и размещенную в каталоге ...\Samples\Solution\Toledo.

  • Формы Visual FoxPro, основанная на классе FrmSolution, включенная в состав библиотеки классов Solution.vcx, которая размещена в папке ...\Samples\Solution. Форма, основанная на FrmSolution похожа на форму, используемую в примерах Solution.

Вы можете создать форму на основе класса FrmSolution class с помощью создания категории в Toolbox, введением в нее класса FrmSolution и затем создания самой формы, основанной на этом классе.

Для создания формы, используемой в этой репетиции

  1. В меню Tools щелкните на Toolbox.

  2. Выполните щелчок по правой клавише мыши на Toolbox а затем щелкните на Add Category.

  3. В боксе Category name впечатайте имя категории.

    Созданная вами категория появится в Toolbox.

  4. В Toolbox выполните щелчок по правой клавише мыши на категории и затем на Add Class Library.

  5. В диалоговом окне Add Class Library щелкните на кнопке выбора (...), найдите папку ...\Samples\Solution folder и выберите Solution.vcx.

    Классы из библиотеки классов Solution.vcx появятся в категории, только что созданной вами в Toolbox.

  6. В Toolbox выполните щелчок по правой клавише мыши на frmsolution (SOLUTION) и, затем, щелкните на Create Form.

Expand image Открытие Data Environment для формы

Когда вы создаете форму Visual FoxPro создает в ней объект DataEnvironment в виде контейнера для объектов Cursor, CursorAdapter и Relation, которые связаны с формой или набором форм. Вам необходимо открыть DataEnvironment формы и установить подходящие типы источников данных и сами источники данных, для извлечения из них данных.

До того, как вы будете выбирать типы источников данных и сами источники данных, из которых вы будете извлекать данных, откройте описанный объект окружения данных формы -DataEnvironment.

Для открытия окружения данных формы (DataEnvironment)

  1. Откройте форму.

  2. В дизайнере формы Form Designer выполните щелчок по правой клавише мыши на формк и щелкните на DataEnvironment для того, чтобы открыть откружение данных.

    Для формы с еще пустым окружением данных появится диалоговое окно Open.

  3. В диалоговом окне Open щелкните на Cancel.

  4. Для открытия построителя Data Environment выполните щелчок по правой клавише мыши на поверхности Data Environment и затем щелкните на Builder.

    Откроется построитель DataEnvironment Builder и отобразит следующие закладки: Data Source и Cursors.

Для получения более подробной информации об объектах DataEnvironment смотрите описание Объект DataEnvironment.

Expand image Установка типов источников данных и самих источников данных

Установите тип источника данных и сконфигурируйте подходящий источник данных, из которого вы желаете извлекать данные, путем установки опций на закладке Data Source в построителе DataEnvironment Builder.

Для выбора типа источника данных для окружения данных формы

  1. В DataEnvironment Builder щелкните на закладке Data Source.

  2. На закладке Data Source выберите подходящий тип источника данных: ADO, Native, ODBC или XML.

В зависимости от вашего выбора появятся соответствующие опции. Приведенные ниже процедуры демонстрируют - как установить окружение данных в родные таблицы Visual FoxPro, ODBC, ADO и XML.

Для получения более подробной информации смотрите описание Data Source Tab, DataEnvironment Builder.

Указание родных источников данных Visual FoxPro

Для указания родных источников данных Visual FoxPro, используйте приведенную ниже процедуру:

Для использования родных таблиц Visual FoxPro

  1. После выбора Native на закладке Data Source щелкните по кнопке выбора (...) справа от бокса Database

  2. Найдите каталог ...\Samples и выберите базу данных Northwind.

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

Указание источников данных с помощью ODBC

Для указания источников данных ODBC, используйте приведенную ниже процедуру:

Для использования источников данных ODBC

  1. После выбора ODBC на закладке Data Source щелкните по Use connection string.

  2. Впечатайте строку соединения для подключения к базе данных Northwind на вашем локальном или удаленном SQL сервере. Например:

      CopyCode imageСкопировать код
    Driver={Sql Server};Server=localhost;Database=Northwind;Int Security=yes;
    NoteЗамечание

    Вы должны иметь доступ к локальному или удаленному SQL серверу (SQL Server 7 or 2000) с установленной базой данных Northwind. Если ваш SQL сервер не является локальным, вы можете изменить значение параметра Server= в строке соединения на имя вашего удаленного сервера.

  3. Щелкните на Test Connection для проверки соединения.

Если соединение удалось, вы можете продолжить и извлекать данные из источника данных.

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

Указание источников данных с помощью ADO

Для указания источников данных ADO, используйте приведенную ниже процедуру:

Для использования источников данных с помощью ADO

  1. После выбора ADO на закладке Data Source щелкните на Use connection string.

  2. Впечатайте строку соединения для подключения к базе данных Northwind на вашем локальном или удаленном SQL сервере. Например:

      CopyCode imageСкопировать код
    Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial Catalog=Northwind;Data Source=localhost
    NoteЗамечание

    Вы должны иметь доступ к локальному или удаленному SQL серверу (SQL Server 7 or 2000) с установленной базой данных Northwind. Если ваш SQL сервер не является локальным, вы можете изменить значение параметра Data Source= в строке соединения в имя вашего удаленного сервера.

  3. Щелкните на Test Connection для проверки соединения.

    Если соединение удалось, вы можете продолжить и извлекать данные из источника данных.

Если вы желаете сконструировать строку соежинения вместо печати вашей заготовки на закладке Data Source щелкните по Build для того, чтобы открыть диалоговое окно Data Link Properties в Visual FoxPro OLE DB Provider. Для получения более подробной информации смотрите описание OLE DB Provider для Visual FoxPro.

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

Указание источников данных типа XML

В этой репетиции метод для создания курсоров-адаптеров из XML демонтрирует только один пример того, как вы можете образаться к источнику данных XML, или более конкретно, к файлу XML DataSet, сгенерированному из ADO.NET. Реальный код может отличаться в соответствии с вашими конкретными нуждами.

Для использования источников данных XML

  • После выбора XML на закладке Data Source щелкните по закладке Cursors.

Вы, кроме того, можете использовать курсоры-адаптеры с курсорами, сгенерированными из XML с помощью XML-адаптеров или объекты XMLAdapter. Вы можете использовать такую комбинацию для доступа к более передовым возможностям design-time окружения и привязки элементов управления формы к полям в курсоре-адаптере. XML-адаптер производит реальную работу в run time.

Когда вы создаете курсор-адаптер из XML, вы можете для установки его свойств использовать построитель CursorAdapter Builder. Однако, вам необходимо создать объект XMLAdapter для загрузки XML а его коллекцию Tables. После создания XML-адаптера, вы можете загрузить в него XML файл, установить команду Select курсора-адаптера в желаемую ссылку на объект XMLTable, содержащийся в коллекции Tables объекта XMLAdapter и, затем вызвать метод CursorFill курсора-адаптера для заполнения курсора-адаптера данными XML.

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

Для получения более подробной информации о том, как курсоры-адаптеры работают с XML адаптерами смотрите описание Образец - Создание курсора из XML DataSet в качестве примера того, как обращаться к файлу XML и генерировать XML DiffGrams и описание Выполняемый функции XML с использованием XML-адаптеров.

Для получения более подробной информации о XML-адаптерах и курсорах-адаптерах смотрите описания Класс XMLAdapter и Класс CursorAdapter.

Expand image Извлечение данных для курсоров-адаптеров

После установки окружения данных для формы в построителе DataEnvironment Builder для нужного вам источника данных, создайте объекты CursorAdapter в окружении данных формы для извлечения данных из источника данных. Вы можете создать объекты CursorAdapter установкой опций на закладке Cursors построителя CursorAdapter Builder.

Для создания нового курсора-адаптера

  1. В построителе DataEnvironment Builder щелкните на закладке Cursors, чтобы перейти на нее.

  2. На закладке Cursors щелкните на New для того, чтобы открыть построитель CursorAdapter Builder.

Появится CursorAdapter Builder, отобразит закладки Properties, Data Access и Auto-Update и создаст новый курсор-адаптер с именем Cursor1.

Для получения более подробной информации смотрите описание Закладка Cursors построителя DataEnvironment Builder.

Установка свойств для курсоров-адаптеров

Установите свойства для нового курсора-адаптера с помощью редактирования его свойств на закладке Properties построителя CursorAdapter Builder.

Для установки свойств нового курсора-адаптера

  1. В построителе CursorAdapter Builder щелкните на закладке Properties чтобы перейти на нее, если она в данный момент времени не отображается.

  2. На закладке Properties измените, если вы этого желаете, имя для Cursor1; переименуйте псевдоимя курсора-адаптера в Customer.

    NoteЗамечание

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

  3. Щелкните на чек-боксе Use DataEnvironment data source для использования источника данных, установленного ранее для окружения данных формы.

Для получения более подробной информации смотрите описание Закладка Properties построителя CursorAdapter Builder.

Указание - как курсор-адаптеры будут извлекать данные

После создания нового курсора-адаптера, укажите - как курсор-адаптер будет извлекать данные из источника данных установкой опций на закладке Data Access построителя CursorAdapter Builder.

Если вы используте источники данных типа Native, ODBC или ADO, следуйте приведенным ниже инструкциям для конструирования команды Select для извлечения данных из источника данных. Если же вы используете источник данных типа XML, следуйте инструкциям для указания правильно-сформированного файла XML, который содержит схему.

Для конструирования команды Select для источников данных типа Native, ODBC и ADO

  1. В построителе CursorAdapter Builder, щелкните на закладке Data Access для того, чтобы перейти на нее.

  2. На закладке Data Access щелкните на Build для того, чтобы открыть диалоговое окно Select Command Builder.

  3. В диалоговом окне Select Command Builder выберите таблицу CUSTOMERS в списке таблиц Table.

    Поля, которые содержит таблица CUSTOMERS появятся в списке с левой стороны диалогового окна Select Command Builder.

  4. В этом списке щелкните на CUSTOMERS.* для включения таблицы CUSTOMERS и всех содержащихся в ней полей в состав команды Select.

    NoteЗамечание

    Обычно, если вы желаете выбрать индивидуальные поля в таблице для команды Select, щелкайте на tableName.fieldName для раздельного ввода каждого поля в список выбранных полей с правой стороны диалогового окна Select Command Builder.

  5. Щелкните на стрелке, указывающей вправо (>) для ввода CUSTOMERS.* в список выбранных полей, и затем щелните на OK.

    Собранная команда Select появится в боксе Select command, а схема курсор-адаптера появится в боксе Schema.

Вы можете установить дополнительные опции для извлечения данных. Однако, эта репетиция использует установки, определенные для этих опций по умолчанию.

NoteЗамечание

В этой репетиции, режим буферизации для курсор-адаптера установлен в оптимистическое буферирование строки, так как это определено по умолчанию на закладке Data Access для источников данных типа Native, ODBC и ADO. Поэтому, когда вы делаете изменения в строке элемента управления "grid" на форме и после перемещаетесь в следующую строке, сделанные вами изменения посылаются в таблицу Customer.dbf в источнике данных через подходящий тип соединения. Для получения более подробной информации о режимах буферизации смотрите описание Свойство BufferModeOverride.

Для получения более подробной информации о дополнительных опциях, которые вы можете установить сами, смотрите описание Закладка Data Access построителя CursorAdapter Builder.

Для указания XML файла в случае использования источника данных типа XML

  1. В построителе CursorAdapter Builder щелкните на закладке Data Access для того, чтобы перейти на нее, если она еще не видима.

  2. На закладке Data Access щелните на кнопке Build расположенной выше бокса Schema для вывода диалогового окна Open.

  3. Найдите каталог ...\Samples\Solution\Toledo\ и выберите файл GetCustomers.XML.

    В боксе Schema появится схема для курсор-адаптера.

  4. В боксе Buffer mode override выберите Optimistic table buffering.

    NoteЗамечание

    В этой репетиции, режим буферизации для курсор-адаптера установлен в оптимистическое буферирование таблицы на закладке Data Access для источников данных типа XML что позвволяет XML-адаптеру создать XML DiffGrams. Для получения более подробной информации об установках режима буферизации смотрите описание Свойство BufferModeOverride.

  5. Щелкните на OK для того, чтобы закрыть CursorAdapter Builder и затем еще раз щелкните на OK для того, чтобы закрыть DataEnvironment Builder.

    Новый курсор-адаптер, теперь уже с именем Customer, появится в Data Environment формы и будет содержать все поля их файла GetCustomer.xml file.

Вы можете установить дополнительные опции для извлечения данных. Однко, за исключение установки режима буферизации для курсора, создаваемого курсор-адаптером в примере XML, эта репетиция использует определенные для этих опций значения по умолчанию. Для получения более подробной информации об этих установках смотрите описание Закладка Data Access построителя CursorAdapter Builder.

Для продолжения примера для XML смотрите описание Использование курсора-адаптера в форме.

Конфигурирование обновлений для курсоров-адаптеров

После конструирования команды Select для курсор-адаптера с целью извлечения данных, вы можете указать - как курсор-адаптер будет производить обновления на источнике данных с помощью установки опций на закладке Auto-Update построителя CursorAdapter Builder.

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

  1. В построителе CursorAdapter Builder щелкните на закладке Auto-Update.

  2. На закладке Auto-Update отметьте чек-бокс Auto-update.

    При этом на закладке Auto-Update будет заполнен список полей, которые вы выбрали на закладке Data Access и будет разрешено автоматическое обновление указанных там полей.

  3. Отметьте чек-бокс Update all fields для указания, что все поля из указанной таблицы будут обновляться автоматически.

    Метка выбора в виде карандаша появится в колонке автоматического обновления для каждого поля в списке полей.

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

  5. Снимите метку с чек-бокса в колонке автоматического обновления для поля CUSTOMERID для предотвращения изменения значения первичного ключа.

  6. Щелкните на OK для того, чтобы закрыть построитель CursorAdapter Builder и еще раз на OK для того, чтобы закрыть построитель DataEnvironment Builder.

    Новый курсор-адаптер, теперь уже с именем Customer появится в Data Environment формы и будет содержать все поля, как это и было определено, из таблицы Customer.

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

Для получения более подробной информации смотрите описание Закладка Auto-Update построителя CursorAdapter Builder.

Expand image Использование курсора адаптера в форме

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

Для создания эелемента управления grid с помощью созданного курсор-адаптера

  1. В DataEenvironment формы выберите щелчком курсор-адаптер с именем Customer и перетащите его на форму для создания элемента управления grid.

    Если вы используте источник данных типа XML, впечатайте приведенный ниже код в процедуру события Init формы для создания и конфигурирования объекта XMLAdapter:

      CopyCode imageСкопировать код
    LOCAL oXMLAdapter as XMLAdapter
    DODEFAULT()
    ThisForm.AddProperty('oXMLAdapter',CREATEOBJECT('XMLAdapter'))
    WITH ThisForm.oXMLAdapter
       .LoadXml(ThisForm.cRunPath+'getcustomers.xml',.T.)
    ENDWITH
    ThisForm.DataEnvironment.cursor1.SelectCmd="ThisForm.oXMLAdapter.Tables.Item(1)"
    ThisForm.DataEnvironment.cursor1.CursorFill()
    GO TOP
    ThisForm.BindControls = .T.
    ThisForm.grdCustomer.AutoFit()
  2. В окне Properties установите свойство формы BindControls в False (.F.).

  3. Сохраните форму в папке ...\Samples\Solution\Toledo.

  4. В понели инструментов Visual FoxPro щелкните на кнопке Run (!) для запуска формы.

На экране появится форма и отобразит grid, который содержит приведенное ниже:

  • Для типов источников данных Native, ODBC и ADO: данные из полей таблицы CUSTOMER.

  • Для типа источника данных XML: данные, загруженные из XML DataSet, GetCustomer.xml.

    При использовании XML-адаптеров с курсорами-адаптерами, вы можете сгенерировать XML DiffGrams с помощью созданного XML-адаптера. Например, приведенный ниже пример кода создает строку XML DiffGram в локальной переменной с именем lcXML:

      CopyCode imageСкопировать код
    LOCAL lcXML, llIncludeBefore, llChangesOnly, llIsFile, lcSchemaLocation
    WITH ThisForm.oXMLAdapter
    ...* Убираем XML документ, но сохраняем схему.
    ....ReleaseXML(.F.)   
    ....UTF8Encoded = .T.    && Указывает международные символы.
    ....IsDiffgram = .T.       && Генерирует XML DiffGram.
    ...llIncludeBefore = .T. && Включает формат <diffgram:before>.
    ...llChangesOnly = .T.   && Генерирует только произведенные изменения.
    ...llIsFile = .F.        
    ...lcSchemaLocation = "" && схема встроенная.
    ....ToXML("lcXML",lcSchemaLocation,llIsFile,llIncludeBefore,llChangesOnly)
    ENDWITH

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