CONEXION ADODB SQL SERVER

CONEXION ADODB SQL SERVER

Postby MANOLO » Mon Jan 29, 2024 9:12 am

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
MANOLO
 
Posts: 87
Joined: Sun Oct 09, 2005 8:49 pm
Location: Spain

Re: CONEXION ADODB SQL SERVER

Postby leandro » Mon Jan 29, 2024 2:40 pm

Quizás te pueda ayudar en algo :oops:

Code: Select all  Expand view  RUN

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) ]
User avatar
leandro
 
Posts: 1688
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: CONEXION ADODB SQL SERVER

Postby MANOLO » Mon Jan 29, 2024 5:09 pm

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.
MANOLO
 
Posts: 87
Joined: Sun Oct 09, 2005 8:49 pm
Location: Spain

Re: CONEXION ADODB SQL SERVER

Postby leandro » Tue Jan 30, 2024 2:16 am

Pues si quieres intenta de la siguiente manera:
Code: Select all  Expand view  RUN

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) ]
User avatar
leandro
 
Posts: 1688
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: CONEXION ADODB SQL SERVER

Postby MANOLO » Tue Jan 30, 2024 5:29 pm

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
MANOLO
 
Posts: 87
Joined: Sun Oct 09, 2005 8:49 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 105 guests