Hola a todos llevaba tiempo que no entraba en el forum, ya que el programa funcionaba de maravilla, con acceso a mysql mediante ado, pero ahora nos han cambiado la base de datos por sql server, y me estoy volviendo loco me da error en el recordset, os paso como lo hago a ver si a alguien se le ocurre el porqué:
oApp:oCon:ConnectionString:= "Provider=SQLOLEDB;Password=xxxx3;Persist Security Info=True;User ID=XXXX;Initial Catalog=ERP6_base;Data Source=185.80.87.6\SQLEXPRESS2019"
TRY
oApp:oCon:Open()
CATCH oError
MsgInfo("No se pudo lograr la conexión"+OAPP:OCON:CONNECTIONsTRING,oApp:cAplicacion)
ShowError(oError)
RETURN(.F.)
END
aqui me llega osea que abre la conexión sin problema
// ahora procedo a abrir el recorset
TRY
orsPed := TOleAuto():New("adodb.recordset")
// orsPed:= CreateObject("ADODB.Recordset")
CATCH oError
MsgStop( "No se ha podido crear el RECORDSET de Pedidos!", oApp:cAplicacion)
ShowError(oError)
orsPed := NIL
lret:=.f.
CLOSE_DBF(ODTEMP)
RETURN(lret)
END
orsPed:CursorLocation := adUseClient
orsPed:LockType := adLockOptimistic
orsPed:CursorType := adOpenDynamic
orsped:source:="SELECT * FROM ERP6_base" // ENVIAMOS QUERY DE PRUEBA PARA COMPROBAR CONEXIÓN
orsPed:ActiveConnection( oApp:oCon )
TRY
orsped:open()
CATCH oError
MsgStop( "No se ha podido abrir el RECORDSET de Pedido 386s !", oApp:cAplicacion)
ShowError(oError)
CLOSE_DBF(ODTEMP)
RETURN(.F.)
END
Y AQUÍ ME DICE ERROR 1001 OPEN() UNKNOW -----
He cambiado la forma de conectar varias veces, atacando directamente al DSN siempre conecta pero cuando le paso el open del recorset es cuando me da error que puede pasar.
uso FW709 con xharbour - no puedo cambiar de versión ya que todo lo demás funciona a la perfección.
gracias por vuestra colaboración
CONEXION ADODB SQL SERVER
Re: CONEXION ADODB SQL SERVER
Quizás te pueda ayudar en algo
Code: Select all | Expand
TRY
oCnMsq:=toleauto():new("adodb.connection")
CATCH oError
MsgStop( "No se ha podido crear la conexión !", "Error de datos")
RETURN(.F.)
END
oCnMsq:ConnectionString:="Driver={SQL Server};"+;
"Server=SERVER;"+;
"Database=MYDB;"+;
"Uid=MYUSER;"+;
"Pwd=MYPASS;"
TRY
oCnMsq:Open()
//msginfo("conexion abierta")
CATCH oError
MsgStop( "No pude abrir la conexión para crear las tablas !", "Error de datos")
RETURN(.F.)
END
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com
[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com
[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
Re: CONEXION ADODB SQL SERVER
Gracias Leandro, así es como lo he probado también, la conexión odbc me la hace perfectamente, el problema es cuando le lanzo el :
<CODE>
TRY
orsPed := TOleAuto():New("adodb.recordset")
// orsPed:= CreateObject("ADODB.Recordset")
CATCH oError
MsgStop( "No se ha podido crear el RECORDSET de Pedidos!", oApp:cAplicacion)
ShowError(oError)
orsPed := NIL
lret:=.f.
CLOSE_DBF(ODTEMP)
RETURN(lret)
END
orsPed:CursorLocation := adUseClient
orsPed:LockType := adLockOptimistic
orsPed:CursorType := adOpenDynamic
orsPed:Source :="select * from BasedeDatos"
orsPed:ActiveConnection( oApp:oCon )
TRY
orsPed:Open()
CATCH oError
MsgStop( "No se ha podido abrir el RECORDSET de Pedidos !", oApp:cAplicacion)
ShowError(oError)
CLOSE_DBF(ODTEMP)
RETURN(.F.)
END
</code>
es justo aquí cuando lanzo el recorset para pasarle el query cuando me dice que la función open() no existe.
gracias de todos modos, a ver si lo conseguimos.
<CODE>
TRY
orsPed := TOleAuto():New("adodb.recordset")
// orsPed:= CreateObject("ADODB.Recordset")
CATCH oError
MsgStop( "No se ha podido crear el RECORDSET de Pedidos!", oApp:cAplicacion)
ShowError(oError)
orsPed := NIL
lret:=.f.
CLOSE_DBF(ODTEMP)
RETURN(lret)
END
orsPed:CursorLocation := adUseClient
orsPed:LockType := adLockOptimistic
orsPed:CursorType := adOpenDynamic
orsPed:Source :="select * from BasedeDatos"
orsPed:ActiveConnection( oApp:oCon )
TRY
orsPed:Open()
CATCH oError
MsgStop( "No se ha podido abrir el RECORDSET de Pedidos !", oApp:cAplicacion)
ShowError(oError)
CLOSE_DBF(ODTEMP)
RETURN(.F.)
END
</code>
es justo aquí cuando lanzo el recorset para pasarle el query cuando me dice que la función open() no existe.
gracias de todos modos, a ver si lo conseguimos.
Re: CONEXION ADODB SQL SERVER
Pues si quieres intenta de la siguiente manera:
Code: Select all | Expand
cQry := "select * from BasedeDatos"
orsPed := FW_OPENRECORDSET(oApp:oCon,cQry,adLockOptimistic,adOpenKeyset)
xbrowse(orsPed)
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com
[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com
[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
Re: CONEXION ADODB SQL SERVER
Hola Leandro muchísimas gracias por tus aportaciones, pero esa función me dice que no existe FW_OPENRECORDSET doesn't exist, quizas es de alguna versión más nueva de fivewin.
sigo intentado. gracias
sigo intentado. gracias