Обновляет курсор текущими данными из источника данных. 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 являются следующими::
Copy
Code | |
|---|---|
* .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
Замечание