考試大計算機(jī)等級站整理:
在附件 SFDataClasses.vcx 中的這個數(shù)據(jù)和環(huán)境類要比 SFCursorAdapter 簡單的多。但它增加了一些非常有用的功能:
×× GetData 方法會調(diào)用所有在這個數(shù)據(jù)環(huán)境類里面的 SFCursorAdapter 成員類的 GetData 方法,這樣你就不需要自己去一個個的調(diào)用它們。與此類似的是,Requery 方法和 Update 方法也會調(diào)用每個 SFCursorAdapter 成員類的 Requery 和 Update 方法。
×× 象 SFCursorAdapter 一樣,SetConnection 方法會把 DataSource 設(shè)置為一個 ADO Recordset,并把這個 Recordset 的 ActiveConnection 屬性設(shè)置為一個 ADO Connection 對象。不過,它還會調(diào)用所有 UseDEDataSource 屬性被設(shè)置為 .F. 的 SFCursorAdapter 成員類的 SetConnection 方法。
×× 它提供了一些簡單的錯誤處理(cErrorMessage 屬性會被填入錯誤信息)
×× 它有一個 Release 方法。
現(xiàn)在我們看看這個類的一對方法。GetData 非常簡單:如果這個數(shù)據(jù)環(huán)境類的任何成員對象擁有 GetData 方法,則調(diào)用該方法:
lparameters tlNoData
local loCursor, ;
llReturn
for each loCursor in This.Objects
if pemstatus(loCursor, 'GetData', 5)
llReturn = loCursor.GetData(tlNoData)
if not llReturn
This.cErrorMessage = loCursor.cErrorMessage
exit
endif not llReturn
endif pemstatus(loCursor, 'GetData', 5)
next loCursor
return llReturn
SetConnection 方法稍微復(fù)雜一點:如果它的任何成員對象有 SetConnection 方法、并且該成員對象的 UseDEDataSource 屬性被設(shè)置為 .F.,則調(diào)用該成員對象的 SetConnection 方法;然后,如果有任何一個 CursorAdapter 對象的 UseDEDataSource 屬性被設(shè)置為了 .T.,則使用類似于 SFCusrorAdapter 中的那樣的代碼來設(shè)置自己的 DataSource:
lparameters tuConnection
local llSetOurs, ;
loCursor, ;
llReturn
with This
* Call the SetConnection method of any CursorAdapter that isn't using our
* DataSource.
llSetOurs = .F.
for each loCursor in .Objects
do case
case upper(loCursor.BaseClass) <> 'CURSORADAPTER'
case loCursor.UseDEDataSource
llSetOurs = .T.
case pemstatus(loCursor, 'SetConnection', 5)
loCursor.SetConnection(tuConnection)
endcase
next loCursor
* If we found any CursorAdapters that are using our DataSource, we'll need to
* set our own DataSource.
if llSetOurs
do case
case .DataSourceType = 'ODBC'
.DataSource = tuConnection
case .DataSourceType = 'ADO'
.DataSource = createobject('ADODB.RecordSet')
.DataSource.ActiveConnection = tuConnection
endcase
endif llSetOurs
endwith
在附件 SFDataClasses.vcx 中的這個數(shù)據(jù)和環(huán)境類要比 SFCursorAdapter 簡單的多。但它增加了一些非常有用的功能:
×× GetData 方法會調(diào)用所有在這個數(shù)據(jù)環(huán)境類里面的 SFCursorAdapter 成員類的 GetData 方法,這樣你就不需要自己去一個個的調(diào)用它們。與此類似的是,Requery 方法和 Update 方法也會調(diào)用每個 SFCursorAdapter 成員類的 Requery 和 Update 方法。
×× 象 SFCursorAdapter 一樣,SetConnection 方法會把 DataSource 設(shè)置為一個 ADO Recordset,并把這個 Recordset 的 ActiveConnection 屬性設(shè)置為一個 ADO Connection 對象。不過,它還會調(diào)用所有 UseDEDataSource 屬性被設(shè)置為 .F. 的 SFCursorAdapter 成員類的 SetConnection 方法。
×× 它提供了一些簡單的錯誤處理(cErrorMessage 屬性會被填入錯誤信息)
×× 它有一個 Release 方法。
現(xiàn)在我們看看這個類的一對方法。GetData 非常簡單:如果這個數(shù)據(jù)環(huán)境類的任何成員對象擁有 GetData 方法,則調(diào)用該方法:
lparameters tlNoData
local loCursor, ;
llReturn
for each loCursor in This.Objects
if pemstatus(loCursor, 'GetData', 5)
llReturn = loCursor.GetData(tlNoData)
if not llReturn
This.cErrorMessage = loCursor.cErrorMessage
exit
endif not llReturn
endif pemstatus(loCursor, 'GetData', 5)
next loCursor
return llReturn
SetConnection 方法稍微復(fù)雜一點:如果它的任何成員對象有 SetConnection 方法、并且該成員對象的 UseDEDataSource 屬性被設(shè)置為 .F.,則調(diào)用該成員對象的 SetConnection 方法;然后,如果有任何一個 CursorAdapter 對象的 UseDEDataSource 屬性被設(shè)置為了 .T.,則使用類似于 SFCusrorAdapter 中的那樣的代碼來設(shè)置自己的 DataSource:
lparameters tuConnection
local llSetOurs, ;
loCursor, ;
llReturn
with This
* Call the SetConnection method of any CursorAdapter that isn't using our
* DataSource.
llSetOurs = .F.
for each loCursor in .Objects
do case
case upper(loCursor.BaseClass) <> 'CURSORADAPTER'
case loCursor.UseDEDataSource
llSetOurs = .T.
case pemstatus(loCursor, 'SetConnection', 5)
loCursor.SetConnection(tuConnection)
endcase
next loCursor
* If we found any CursorAdapters that are using our DataSource, we'll need to
* set our own DataSource.
if llSetOurs
do case
case .DataSourceType = 'ODBC'
.DataSource = tuConnection
case .DataSourceType = 'ADO'
.DataSource = createobject('ADODB.RecordSet')
.DataSource.ActiveConnection = tuConnection
endcase
endif llSetOurs
endwith