Página 1 de 1

AdoDatasource: varias cosas

Publicado: Jue Nov 26, 2009 4:42 pm
por jose.luis
Hola,
En AdoDatasource:Query (y familia) no se está haciendo bien el tema de
las propiedades después de haber creado el recordset. Las propiedades
nCursorLocation, nCursorType y nLockType solo son asignables _antes_ de
crear el recordset. Este código
METHOD Query( cCommand, cProcess ) CLASS XAdoDataSource
LOCAL oDataSet
DEFAULT cProcess TO ::cProcess
IF ! ::CheckConnection()
RETURN .F.
ENDIF
WITH OBJECT oDataSet := TSQLQuery():Create( ::oParent, Self,
cCommand, Upper( cProcess ) )
:nCursorLocation := adUseClient
:nCursorType := adOpenStatic
:nLockType := adLockOptimistic
END WITH
RETURN oDataSet
Yo lo cambiarí­a por este otro:
METHOD Query( cCommand, cProcess, nLockType, nCursorLocation,
nCursorType ) CLASS XAdoDataSource
LOCAL oDataSet
DEFAULT cProcess TO ::cProcess
DEFAULT nLockType TO adLockOptimistic
DEFAULT nCursorLocation TO adUseClient
DEFAULT nCursorType TO adOpenStatic
IF ! ::CheckConnection()
RETURN .F.
ENDIF
WITH OBJECT oDataSet := TSQLQuery():New( )
:nCursorLocation := nCursorLocation
:nCursorType := nCursorType
:nLockType := nLockType
:Create( ::oParent, Self, cCommand, Upper( cProcess ) )
END WITH
RETURN oDataSet
Por cierto... habrí­a que revisar todos los métodos QueryXXX para que se
devuelva siempre un objeto tDataset (tal como indica la ayuda).
Creo que
IF ! ::CheckConnection()
RETURN .F.
ENDIF
Deberí­a ser
IF ! ::CheckConnection()
RETURN tDataset():New()
ENDIF
O similar... Más que nada para mantener coherencia con lo que se devuelve.
Saludos,
José Luis Capel

AdoDatasource: varias cosas

Publicado: Jue Nov 26, 2009 8:10 pm
por ignacio
José Luis,
> Yo lo cambiaría por este otro:
Entiendo que la funcionalidad de ambos códigos es muy parecida ya que
TSQLQuery():Create() realmente no abre el dataset.
> Por cierto... habría que revisar todos los métodos QueryXXX para que se
> devuelva siempre un objeto tDataset (tal como indica la ayuda).
A cuales te refieres exactamente.
Gracias
Saludos
--
Ignacio Ortiz de Zúñiga
Xailer support / Soporte de Xailer
http://www.xailer.com
http://www.xailer.info
"José Luis Capel ~ AgSoft" <jose.luis@iaicom.com> escribió en el mensaje
news:4b0ea1b0$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Hola,
>
> En AdoDatasource:Query (y familia) no se está haciendo bien el tema de las
> propiedades después de haber creado el recordset. Las propiedades
> nCursorLocation, nCursorType y nLockType solo son asignables _antes_ de
> crear el recordset. Este código
>
>
> METHOD Query( cCommand, cProcess ) CLASS XAdoDataSource
>
> LOCAL oDataSet
>
> DEFAULT cProcess TO ::cProcess
>
> IF ! ::CheckConnection()
> RETURN .F.
> ENDIF
>
> WITH OBJECT oDataSet := TSQLQuery():Create( ::oParent, Self, cCommand,
> Upper( cProcess ) )
> :nCursorLocation := adUseClient
> :nCursorType := adOpenStatic
> :nLockType := adLockOptimistic
> END WITH
>
> RETURN oDataSet
>
> Yo lo cambiaría por este otro:
>
>
> METHOD Query( cCommand, cProcess, nLockType, nCursorLocation,
> CursorType ) CLASS XAdoDataSource
>
> LOCAL oDataSet
>
> DEFAULT cProcess TO ::cProcess
> DEFAULT nLockType TO adLockOptimistic
> DEFAULT nCursorLocation TO adUseClient
> DEFAULT nCursorType TO adOpenStatic
>
> IF ! ::CheckConnection()
> RETURN .F.
> ENDIF
>
> WITH OBJECT oDataSet := TSQLQuery():New( )
> :nCursorLocation := nCursorLocation
> :nCursorType := nCursorType
> :nLockType := nLockType
> :Create( ::oParent, Self, cCommand, Upper( cProcess ) )
> END WITH
>
>
> RETURN oDataSet
>
>
> Por cierto... habría que revisar todos los métodos QueryXXX para que se
> devuelva siempre un objeto tDataset (tal como indica la ayuda).
>
> Creo que
>
> IF ! ::CheckConnection()
> RETURN .F.
> ENDIF
>
> Debería ser
>
> IF ! ::CheckConnection()
> RETURN tDataset():New()
> ENDIF
>
> O similar... Más que nada para mantener coherencia con lo que se devuelve.
>
> Saludos,
> José Luis Capel
>