DefaultDatabase de Ado
Publicado: Dom Oct 25, 2009 1:01 pm
Hola,
Creo que sería interesante añadir una propiedad a AdoDatasource que puede llamarse cDefaultDatabase para que, en el momento de la creación, podamos indicar el nombre de la base de datos que se quiere abrir.
A veces la cadena de conexión no contiene ese valor.
Saludos,
José Luis Capel
Por ejemplo, la case podría quedar así
CLASS tAdoDatasource FROM xAdoDatasource
PROPERTY cDefaultDatabase
METHOD Connect()
ENCLASS
METHOD Connect( cConnect ) CLASS tAdoDataSource
LOCAL oError, oDataLink
UPDATE ::cConnect TO cConnect
::DisConnect()
::OnConnect( ::oConnection )
// Establecemos parametros conexion
TRY
WITH OBJECT ::oConnection
:Attributes := ::nAttributes
:CommandTimeOut := ::nTimeOut
:ConnectionString := ::cConnect
:ConnectionTimeOut := ::nConnTimeOut
:CursorLocation := ::nCursorLocation
:IsolationLevel := ::nIsolationLevel
:Mode := ::nMode
IF !EMPTY(::cDefaultDatabase)
:DefaultDatabase := ::cDefaultDatabase
ENDIF
END WITH
CATCH oError
::NewADOError( "ADODB:oConnection:Params" )
RETURN .F.
END
// Intentamos conectar
TRY
::oConnection:Open( ::cConnect, ::cUser, ::cPassword, ;
IIf( ::lConnectAsync, adAsyncConnect, adConnectUnspecified ) )
CATCH oError
TRY
IF Empty( ::cConnect )
oDataLink := TOleAuto():New( "DataLinks" )
oDataLink:PromptEdit( ::oConnection )
::FcConnect := ::oConnection:ConnectionString
oDataLink := NIL
ENDIF
::Properties( "Prompt" ):Value := 2
::oConnection:Open( ::cConnect, ::cUser, ::cPassword, ;
IIf( ::lConnectAsync, adAsyncConnect, adConnectUnspecified ) )
CATCH oError
::NewADOError( "ADODB:oConnection:Open" )
RETURN .F.
END
END
::FlConnected := ::State() != adStateClosed
::FcConnect := ::oConnection:ConnectionString
::OnConnected()
RETURN .T.
--
Creo que sería interesante añadir una propiedad a AdoDatasource que puede llamarse cDefaultDatabase para que, en el momento de la creación, podamos indicar el nombre de la base de datos que se quiere abrir.
A veces la cadena de conexión no contiene ese valor.
Saludos,
José Luis Capel
Por ejemplo, la case podría quedar así
CLASS tAdoDatasource FROM xAdoDatasource
PROPERTY cDefaultDatabase
METHOD Connect()
ENCLASS
METHOD Connect( cConnect ) CLASS tAdoDataSource
LOCAL oError, oDataLink
UPDATE ::cConnect TO cConnect
::DisConnect()
::OnConnect( ::oConnection )
// Establecemos parametros conexion
TRY
WITH OBJECT ::oConnection
:Attributes := ::nAttributes
:CommandTimeOut := ::nTimeOut
:ConnectionString := ::cConnect
:ConnectionTimeOut := ::nConnTimeOut
:CursorLocation := ::nCursorLocation
:IsolationLevel := ::nIsolationLevel
:Mode := ::nMode
IF !EMPTY(::cDefaultDatabase)
:DefaultDatabase := ::cDefaultDatabase
ENDIF
END WITH
CATCH oError
::NewADOError( "ADODB:oConnection:Params" )
RETURN .F.
END
// Intentamos conectar
TRY
::oConnection:Open( ::cConnect, ::cUser, ::cPassword, ;
IIf( ::lConnectAsync, adAsyncConnect, adConnectUnspecified ) )
CATCH oError
TRY
IF Empty( ::cConnect )
oDataLink := TOleAuto():New( "DataLinks" )
oDataLink:PromptEdit( ::oConnection )
::FcConnect := ::oConnection:ConnectionString
oDataLink := NIL
ENDIF
::Properties( "Prompt" ):Value := 2
::oConnection:Open( ::cConnect, ::cUser, ::cPassword, ;
IIf( ::lConnectAsync, adAsyncConnect, adConnectUnspecified ) )
CATCH oError
::NewADOError( "ADODB:oConnection:Open" )
RETURN .F.
END
END
::FlConnected := ::State() != adStateClosed
::FcConnect := ::oConnection:ConnectionString
::OnConnected()
RETURN .T.
--