Обновляет курсор текущими данными из источника данных. CursorRefresh повторно исполняет значение параметра SelectCmd в событии BeforeCursorRefresh относительно DataSourceType объекта CursorAdapter .
![]() |
---|
Если SelectCmd в событии BeforeCursorRefresh содержит параметры, вы можете изменять область данных, которые возвращаются из оригинального запроса с помощью изменения параметров. |
CursorAdapter.CursorRefresh() |
Возвращаемое
значение
Логический тип данных. CursorRefresh возвращает True (.T.) если курсор успешно перезаполнен данными, или, в противном случае, False (.F.).
![]() |
---|
Для получения информации об ошибке, в случае если метод CursorRefresh вернул False (.F.), вы должны вызвать функцию AERROR( ), так как обработчики ошибок, такие как команда ON ERROR, событие Error и команда TRY...CATCH...FINALLY не ловят эту информацию. |
Примечания
Применяется к: классу CursorAdapter
CursorRefresh обновляет перечисленные ниже свойства курсоров, основанных на ADO или ODBC из свойств объекта CursorAdapter:
Visual FoxPro сгенерирует ошибку, если курсор содержит несохраненные изменения.
Если значение свойства DataSourceType объекта CursorAdapter установлено в "ADO", то при исполнении метода CursorFill объекта CursorAdapter, CursorRefresh ведет себя следующим образом:
-
Объект CursorAdapter имеет подсоединенный курсор, полученный в результате исполнения SelectCmd с помощью CursorFill:
-
Устанавливает свойство CommandText для ADO Command объекта ActiveCommand в значение SelectCmd, используемого для открытия ADO RecordSet, если только CommandText уже не содержит это значение.
-
Обновляет коллекцию параметров объекта Command и переоценивает значения параметров.
-
Вызывает метод Requery объекта ADO RecordSet и посылает те же самые значения в параметр nOptions, используемый методом CursorFill для открытия ADO RecordSet.
-
-
Объект CursorAdapter имеет присоединенный курсор, полученный в результате отправки уже открытым ADO RecordSet значений в параметр Source метода CursorFill.
-
Вызывает метод Requery ADO RecordSet и посылает то же самое значение параметру nOptions, используему методом CursorFill.
-
![]() |
---|
Метод CursorRefresh игнорирует свойства MapBinary и MapVarchar для размечаемых типов данных. |
Пример
Example 1
Приведенный ниже пример показывает получение результата с использованием ADO с параметром и использованием CursorRefresh для обновления данных. Установки строки соединения для SQL Server (localhost) и Visual FoxPro OLE DB Provider являются следующими:
![]() | |
---|---|
* .ConnectionString = 'provider=SQLOLEDB.1;data source=localhost;'+ * 'initial catalog=Northwind;trusted_connection=yes' CLEAR LOCAL loConn AS ADODB.CONNECTION, ; loCommand AS ADODB.COMMAND, ; loException AS EXCEPTION, ; loCursor AS CURSORADAPTER, ; country, ; laErrors[1]ADO RecordSet loConn = CREATEOBJECT('ADODB.Connection') WITH loConn .ConnectionString = 'provider=vfpoledb;data source=' + ; HOME(2)+'northwind\Northwind.dbc' TRY .OPEN() CATCH TO loException MESSAGEBOX(loException.MESSAGE) CANCEL ENDTRY ENDWITH loCommand = CREATEOBJECT('ADODB.Command') loCommand.ActiveConnection = loConn loCursor = CREATEOBJECT('CursorAdapter') WITH loCursor .ALIAS= 'Customers' .DATASOURCETYPE = 'ADO' .SELECTCMD= ; 'select * from customers where country=?lcCountry' lcCountry = 'Brazil' .DATASOURCE = CREATEOBJECT('ADODB.Recordset') .DATASOURCE.ActiveConnection = loConn llReturn = .CURSORFILL(.F., .F., 0, loCommand) IF llReturn BROWSE lcCountry = 'Canada' llReturn= .CURSORREFRESH() IF llReturn BROWSE ENDIF llReturn ELSE AERROR(laErrors) MESSAGEBOX(laErrors[2]) ENDIF llReturn ENDWITH |
Следующий пример показывает использование CursorRefresh с уже открытым ADO Recordset. Установки строки соединения для SQL Server (localhost) и Visual FoxPro OLE DB Provider являются следующими::
![]() | |
---|---|
* .ConnectionString = 'provider=SQLOLEDB.1;data source=localhost;' + ; * 'initial catalog=Northwind;trusted_connection=yes' CLEAR LOCAL loConn AS ADODB.CONNECTION, ; loCommand AS ADODB.COMMAND, ; loParam AS ADODB.PARAMETER, ; loRs AS ADODB.Recordset,; loException AS EXCEPTION, ; loCursor AS CURSORADAPTER, ; lcCountry, ; laErrors[1] loConn = CREATEOBJECT('ADODB.Connection') WITH loConn .ConnectionString = 'provider=vfpoledb;data source=' + ; HOME(2)+'northwind\Northwind.dbc' TRY .OPEN() CATCH TO loException MESSAGEBOX(loException.MESSAGE) CANCEL ENDTRY ENDWITH loCommand = CREATEOBJECT('ADODB.Command') loCommand.CommandText = ; "SELECT * FROM customers WHERE Country = ?" loParam = loCommand.CreateParameter("Country", 129, 1, 15, "") loCommand.PARAMETERS.APPEND(loParam) loCommand.PARAMETERS("Country") = "Brazil" loCommand.ActiveConnection = loConn loRs = loCommand.Execute() loCursor = CREATEOBJECT('CursorAdapter') WITH loCursor .ALIAS= 'Customers' .DATASOURCETYPE = 'ADO' llReturn = .CURSORFILL(.F., .F., 0, loRs) IF llReturn BROWSE loRs.ActiveCommand.PARAMETERS("Country") = "Canada" llReturn= .CURSORREFRESH() IF llReturn BROWSE ENDIF llReturn ELSE AERROR(laErrors) MESSAGEBOX(laErrors[2]) ENDIF llReturn ENDWITH |
Смотрите
также
Справочное руководство
Свойства, методы и события объекта CursorAdapterСобытие BeforeCursorRefresh
Прочие ресурсы
Методы (Visual FoxPro)
© Microsoft Corporation. All rights reserved.
Перевод выполнен JS.
Отредактировано автором перевода 06.03.2007