Выполняет команду, заданную в свойстве SelectCmd для загрузки данных из источника, определенного в свойстве CursorAdapter DataSource, создает курсор, загружает непосредственно данные, и выполняет необходимые преобразования данных согласно значениям свойств объекта CursorAdapter DataSourceType и CursorSchema .
CursorAdapter.CursorFill( [ lUseCursorSchema [, lNoData [, nOptions [, Source ] ] ] ] ) |
Параметры
- lUseCursorSchema
-
В таблице приводится список возможных значений для lUseCursorSchema.
lUseCursorSchema Описание True (.T.)
Используется схема данных, заданная в свойстве CursorSchema для создания курсора.
Примечание
Visual FoxPro генерирует ошибку для неверного или пустого значения свойства CursorSchema.
False (.F.) или
пустоеСхема данных из свойства CursorSchema не используется при создании курсора.
Вместо этого, метод CursorFill создает курсор в соответствии с обычными правилами по согласованию типов данных для источника, заданного в свойстве CursorAdapter DataSourceType.
- lNoData
-
Возможные значения параметра lNoData.
lNoData Описание True (.T.)
Создание курсора, но данные не загружаются.
Если значение свойства CursorAdapter DataSourceType = "ADO", и свойство SelectCmd имеет непустое значение, метод CursorFill пытается вычислить значения заданных параметров из свойства SelectCmd. Если метод CursorFill не может определить данные параметры, то используются значения = (.NULL.) для этих параметров .
Если значение свойства CursorAdapter DataSourceType = "XML", метод CursorFill создает курсор используя схему, заданную в свойстве CursorSchema, независимо от значения параметра lUseCursorSchema. Если CursorSchema - пустая или неверная, то Visual FoxPro генерирует сообщение об ошибке.
False (.F.) или
пустоеСоздание курсора и загрузка в него данных.
Если Вы задаете данный параметр lNoData для метода CursorFill, и свойство SelectCmd содержит команду выборки в соответствие с SELECT - SQL, которая является параметризованной, то система Visual FoxPro уточняет значения данных параметров в соответствие с общими правилами. Данное действие эквивалентно следующей команде:
Копировать Код
SELECT * FROM "customers in specific country" WHERE 1=0
- nOptions
-
Определяет числовое данное как флаг создания курсора. Это значение nOptions используется также в методе CursorRefresh.
В таблице представлены возможные значения параметра nOptions для различных источников данных CursorAdapter DataSourceType.
DataSourceType nOptions "ADO"
целое число, определяющее тип команд Command или Execution Enum, определенных для объекта ActiveX Data Object (ADO) RecordSet в методе Open. Значение по-умолчанию = -1.
"XML"
Числовая комбинация, описанная в функции XMLTOCURSOR( ) , исключая значение = 8192, устанавливается автоматически при задании параметра lUseCursorSchema = True (.T.).
- Source
-
Определяет ссылку на объект ADO Command или на открытый объект RecordSet.
Объект ADO Command должен иметь заданное свойство ActiveConnection, которое описывает открытие соответствующего объекта ADO Connection. Когда объект ADO Command загружается в данный параметр Source, Visual FoxPro устанавливает значение свойства ADO Command CommandText из ранее описанного CursorAdapter SelectCmd. Visual FoxPro заранее уточняет все необходимые параметры в свойстве SelectCmd, и передает данные команды объекту ADO Command. Метод CursorFill выполняется по следующей схеме:
Копировать Код
CursorAdapter.DataSource.Open( Source,,,,Options )
В данном контексте DataSource - есть объект ADO RecordSet, заданный в свойстве CursorAdapter DataSource, а Source - есть соответствующий объект ADO Command, передаваемый как параметр.
Объект ADO RecordSet должен быть открыт до его использования в методе Source -> CursorFill, который загружает данные в соответствие с правилами ADO RecordSet. В этом случае, значение свойства CursorAdapter DataSourceType должно быть установлено как = "ADO". Свойства CursorAdapter SelectCmd и DataSource - не используются.
Если Вы не задаете данный параметр Source, метод CursorFill выполняется по следующей схеме:
Копировать Код
CursorAdapter.DataSource.Open( CursorAdapter.SelectCmd,,,,Options )
В данном случае: DataSource - есть объект ADO RecordSet, описанный в свойстве CursorAdapter DataSource. Тем не менее, объект ADO RecordSet выполняет команду выборки, заданную в свойстве CursorAdapter SelectCmd вместо использования непосредственно объекта ADO Command. Объект ADO RecordSet должен содержать актуальное свойство ActiveConnection, которое описывает соответствующий объект ADO Connection.
Возвращаемое значение
Логического типа. Метод CursorFill возвращает = True (.T.), если курсор с данными успешно создан; = False (.F.), если курсор не создан.
![]() |
---|
Если метод CursorFill возвращает = False (.F.), то курсор не создается. В этом случае событие BeforeCursorClose и событие AfterCursorClose не выполняются. Для получения подробной информации о выполнении метода CursorFill Вы можете использовать функцию AERROR( ) Другие варианты обработки ошибочных ситуаций: команда ON ERROR, событие Error, и команда TRY...CATCH...FINALLY - не обеспечивают механизм получения дополнительной информации об аварийном завершении выполнения метода, = False. |
Комментарии
Применяется в: Класс CursorAdapter
Следующая таблица описывает различные варианты поведения данного метода CursorFill при свойстве CursorAdapter DataSourceType .
DataSourceType | SelectCmd property behavior | ||
---|---|---|---|
"Native" |
CursorFill выполняет SelectCmd, которая содержит выполнимую команду Visual FoxPro SQL SELECT. | ||
"ADO" |
CursorFill выполняет SelectCmd как команду открытия курсора ADO RecordSet Open. Вам предварительно нужно определить значение свойства CursorAdapter DataSource как правильный объект ADO RecordSet. Если SelectCmd содержит параметры, Вы должны указать правильный объект ADO Command в параметре метода Source . Созданные курсоры закрываются вместе с соответствующим объектом ADO RecordSet. Тем не менее,это не касается тех курсоров, которые создаются при использовании метода CursorAttach . CursorFill не устанавливает значение свойства ADO RecordSet MaxRecords как свойство MaxRecords . | ||
"ODBC" |
CursorFill выполняет SelectCmd используя хэндл соединения (connection handle), заданный в свойстве DataSource объекта CursorAdapter. Visual FoxPro возвращает курсор по аналогии с выполнением соответствующих функций SQL Pass-Through. Имя курсора определяется соответствующим свойством
| ||
"XML" |
Возможны следующие варианты:
|
Дополнение, Если DataSourceType = "XML", и SelectCmd - является командой или функцией, возвращаемой парсером XML:
-
Параметры XML являются такими же как и для функции XMLTOCURSOR( ). Вы можете определить соответствующие параметры для функции XMLTOCURSOR( ) nFlags как значения параметра CursorFill nOptions. Вы можете также указать дополнительные параметры в функции XMLTOCURSOR( ), или их комбинации для функции XMLTOCURSOR( ).
-
CursorFill варьирует межу выбором eExpression и cXMLFile для функции XMLTOCURSOR( ) для определения параметра nOptions:
-
если nOptions = 0, CursorFill вычисляет XMLSource как eExpression и ожидает переменную памяти как допустимую строку XML или выражение, результатов вычисления которого является допустимая строка XML.
-
если nOptions = 512, CursorFill вычисляет XMLSource как cXMLFile и ожидает символьную строку, дополнительно заключенную в кавычки ("") или переменную памяти, содержащую допустимое имя файла.
-
-
Параметр cCursorName в функции XMLTOCURSOR( ) - всегда есть значение свойства Alias для объекта CursorAdapter.
-
Если lUseCursorSchema = True (.T.), CursorFill автоматически добавляет влаг = 8192, для существующего курсора XML.
Когда система Visual FoxPro выполняет метод CursorFill, то уже существующий курсор закрывается, рабочая область с создаваемым курсором становится текущей рабочей областью.
![]() |
---|
Если Вы хотите сохранить уже существующий курсор, то выполните метод CursorDetach перед запуском метода CursorFill. |
Когда система Visual FoxPro подсоединяет курсор (attaches a cursor), Вы не можете изменить структуру командой MODIFY STRUCTURE или командой ALTER TABLE - SQL .