Page 1 of 1

CONEXION ADODB SQL SERVER

PostPosted: Mon Jan 29, 2024 9:12 am
by MANOLO
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

Re: CONEXION ADODB SQL SERVER

PostPosted: Mon Jan 29, 2024 2:40 pm
by leandro
Quizás te pueda ayudar en algo :oops:

Code: Select all  Expand view

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
 

Re: CONEXION ADODB SQL SERVER

PostPosted: Mon Jan 29, 2024 5:09 pm
by MANOLO
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.

Re: CONEXION ADODB SQL SERVER

PostPosted: Tue Jan 30, 2024 2:16 am
by leandro
Pues si quieres intenta de la siguiente manera:
Code: Select all  Expand view

cQry := "select * from BasedeDatos" 
orsPed := FW_OPENRECORDSET(oApp:oCon,cQry,adLockOptimistic,adOpenKeyset)
xbrowse(orsPed)
 

Re: CONEXION ADODB SQL SERVER

PostPosted: Tue Jan 30, 2024 5:29 pm
by MANOLO
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