FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Pregunta sobre FW_OpenAdoConnection
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Pregunta sobre FW_OpenAdoConnection
Posted: Wed Oct 05, 2022 01:11 PM

De acuerdo con la documentaci贸n, si la entiendo bien si yo quisiera abrir una conexi贸n a una base Mysql, MSSql u Oracle, bastar铆a con escribir:

oCn2 := FW_OpenADOConnection( "MSSQL,192.168.120.206,Sarubbi,sa,Came0303", .t. )
xBrowse( oCn2 ) //para ver el objeto conexi贸n

Pero cuando intento verr esta conexi贸n recibo este error:

Time from start: 0 hours 0 mins 14 secs
Error occurred at: 05/10/2022, 10:09:54
Error description: (DOS Error -2147352567) WINOLE/1007 Argumentos incorrectos, fuera del intervalo permitido o en conflicto con otros. (0x800A0BB9): ADODB.Connection
Args:
[ 1] = C TLINKLIST

Stack Calls

Called from: => TOLEAUTO:ISKINDOF( 0 )
Called from: .\source\function\XBROWSER.PRG => XBROWSE( 101 )
Called from: d:\xbase-proyectos\rendimiento-servicios\source\Cargocajas.prg => CARGOCAJAS( 31 )
Called from: d:\xbase-proyectos\rendimiento-servicios\source\Procesosws.prg => PROCESOSDEWS( 33 )
Called from: d:\xbase-proyectos\rendimiento-servicios\source\Main.prg => MAIN( 40 )

驴Qu茅 puedo estar haciendo mal?

Gracias desde ya por vuestra ayuda.

Saludos/Regards,

Jos茅 Murugosa

"Los errores en programaci贸n, siempre est谩n entre la silla, el teclado y la IA!!"
Posts: 817
Joined: Sun Jun 15, 2008 07:47 PM
Re: Pregunta sobre FW_OpenAdoConnection
Posted: Thu Oct 06, 2022 05:55 AM
Hola Jos茅 mira aqu铆 la cadena de conexi贸n apropiada:
https://www.connectionstrings.com/
______________________________________________________________________________

Sevilla - Andaluc铆a
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Pregunta sobre FW_OpenAdoConnection
Posted: Thu Oct 06, 2022 11:36 AM
A nosotros nos funciona de la siguiente manera:

Code (fw): Select all Collapse
oCnEmp := FW_OpenAdoConnection( "Driver={MySQL ODBC 3.51 Driver};Server=127.0.0.1;Port=3306;User=root;Password=tucontrasema;" )
Saludos
LEANDRO AREVALO
Bogot谩 (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Pregunta sobre FW_OpenAdoConnection
Posted: Thu Oct 06, 2022 02:26 PM
Hola, me parece que los par谩metros deber铆an ser de esta manera

Code (fw): Select all Collapse
oCn2 := FW_OpenADOConnection( { "MSSQL","192.168.120.206","Sarubbi","sa","Came0303" }, .t. )


Saludos
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Re: Pregunta sobre FW_OpenAdoConnection
Posted: Thu Oct 06, 2022 04:35 PM

Gracias xManuel, Leandor y Horacio, he probado 2 modos de conexi贸n sin 茅xito.
Adjunto el c贸digo del prg y la respuesta seg煤n la sintaxis utilizada.

C贸digo:

FUNCTION Main()
LOCAL oCn2, oRs2, cSql, oErr

 oCn2 := FW_OpenADOConnection( { "MSSQL", "192.168.120.206", "SarubbiAlba", "sa", "Came0303" }, .t., oErr )
 xBrowse( oCn2 )
 cSql:= "select kxp.corte, k.descripcion, p.id, p.descripcion from P0017 p inner join P0031 kxp on kxp.producto=p.codigo inner join P0029 k on k.codigo=kxp.corte"
 oRs2:=oCn2:RowSet( cSql )
 xBrowse( oRs2 )

RETURN nil

Error:

Application

Path and name: D:\XBASE-PROYECTOS\RENDIMIENTO-SERVICIOS\RendServ.exe (32 bits)
Size: 4,834,816 bytes
Compiler version: Harbour 3.2.0dev (r2008190002)
FiveWin version: FWH 22.03
C compiler version: Borland/Embarcadero C++ 7.0 (32-bit)
Windows version: 6.2, Build 9200

Time from start: 0 hours 0 mins 0 secs
Error occurred at: 10/06/22, 13:28:04
Error description: (DOS Error -2147352567) WINOLE/1007 Argumentos incorrectos, fuera del intervalo permitido o en conflicto con otros. (0x800A0BB9): ADODB.Connection
Args:
[ 1] = C TLINKLIST

Stack Calls

Called from: => TOLEAUTO:ISKINDOF( 0 )
Called from: .\source\function\XBROWSER.PRG => XBROWSE( 101 )
Called from: D:\XBASE-PROYECTOS\RENDIMIENTO-SERVICIOS\SOURCE\conexion-ado.prg => MAIN( 8 )

System

CPU type: Intel(R) Core(TM) i5-6400T CPU @ 2.20GHz 2208 Mhz
Hardware memory: 12063 megs

Free System resources: 90 %
GDI resources: 90 %
User resources: 90 %

Windows total applications running: 5
1 ,
2 , C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1110_none_a8625c
3 Ajustes, C:\Windows\System32\1033\MSOLEDBSQLR.RLL
4 GDI+ Window (RendServ.exe), C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.19041.2006_none_d94bc80de10970
5 Licencia de Deep Freeze, D:\XBASE-PROYECTOS\RENDIMIENTO-SERVICIOS\RendServ.exe

Variables in use

Procedure Type Value
==========================
TOLEAUTO:ISKINDOF
Param 1: O Class: ERROR
XBROWSE
Param 1: C "TLINKLIST"
Local 1: U
Local 2: U
MAIN
Param 1: O Class: TOLEAUTO
Local 1: C "TOLEAUTO"
Local 2: L .F.
Local 3: U
Local 4: U
Local 5: U
Local 6: L .T.
Local 7: U
Local 8: U
Local 9: U
Local 10: L .F.
Local 11: U
Local 12: U
Local 13: U
Local 14: U
Local 15: O Class: TFONT
Local 16: O Class: TFONT
Local 17: U
Local 18: U
Local 19: N 1020.00
Local 20: N 384.00
Local 21: U
Local 22: U
Local 23: U
Local 24: U
Local 25: U
Local 26: L .T.
Local 27: U
Local 28: N 1
Local 29: N 1
Local 30: L .F.
Local 31: A Len: 0
Local 32: L .T.


si cambio en el codigo a:

oCn2 := FW_OpenADOConnection( { "MSSQL, 192.168.120.206, SarubbiAlba, sa, Came0303" }, .t., oErr )

El error da:

Application

Path and name: D:\XBASE-PROYECTOS\RENDIMIENTO-SERVICIOS\RendServ.exe (32 bits)
Size: 4,834,816 bytes
Compiler version: Harbour 3.2.0dev (r2008190002)
FiveWin version: FWH 22.03
C compiler version: Borland/Embarcadero C++ 7.0 (32-bit)
Windows version: 6.2, Build 9200

Time from start: 0 hours 0 mins 4 secs
Error occurred at: 10/06/22, 13:31:35
Error description: Error BASE/1004 No exported method: ROWSET
Args:
[ 1] = U
[ 2] = C select kxp.corte, k.descripcion, p.id, p.descripcion from P0017 p inner join P0031 kxp on kxp.producto=p.codigo inner join P0029 k on k.codigo=kxp.corte

Stack Calls

Called from: => ROWSET( 0 )
Called from: D:\XBASE-PROYECTOS\RENDIMIENTO-SERVICIOS\SOURCE\conexion-ado.prg => MAIN( 10 )

System

CPU type: Intel(R) Core(TM) i5-6400T CPU @ 2.20GHz 2208 Mhz
Hardware memory: 12063 megs

Free System resources: 90 %
GDI resources: 90 %
User resources: 90 %

Windows total applications running: 5
1 ,
2 , C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1110_none_a8625c
3 Ajustes, C:\Program Files (x86)\Common Files\System\Ole DB\MSDASQLR.DLL
4 GDI+ Window (RendServ.exe), C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.19041.2006_none_d94bc80de10970
5 Licencia de Deep Freeze, D:\XBASE-PROYECTOS\RENDIMIENTO-SERVICIOS\RendServ.exe

Variables in use

Procedure Type Value
==========================
ROWSET
Param 1: O Class: ERROR
MAIN
Param 1: C "select kxp.corte, k.descripcion, p.id, p.descripcion from P0017 p inner join P0031 kxp on kxp.producto=p.codigo inner join P0029 k on k.codigo=kxp.corte"
Local 1: U
Local 2: U


Agradezco desde ya vuestra ayuda

Saludos/Regards,

Jos茅 Murugosa

"Los errores en programaci贸n, siempre est谩n entre la silla, el teclado y la IA!!"
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Pregunta sobre FW_OpenAdoConnection
Posted: Thu Oct 06, 2022 05:22 PM
Hola Jos茅, Verificaste si los par谩metros que le pasas a la funci贸n son los correctos? El modelo que te mand茅 es el que me sugiri贸 Mr Rao. Si te fijas en adofuncs.prg que se encuentra en \source\function all铆 pod茅s ver como funciona Fw_OpenAdoConnection. Yo lo uso tal cual el modelo que te mand茅.

Code (fw): Select all Collapse
Fw_OpenAdoConnection(  { ""MSSQL", "Host", "BBDD", "user", "passw" }, lOnOff )

Saludos
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Pregunta sobre FW_OpenAdoConnection
Posted: Fri Oct 07, 2022 04:26 AM
jose_murugosa wrote:De acuerdo con la documentaci贸n, si la entiendo bien si yo quisiera abrir una conexi贸n a una base Mysql, MSSql u Oracle, bastar铆a con escribir:

oCn2 := FW_OpenADOConnection( "MSSQL,192.168.120.206,Sarubbi,sa,Came0303", .t. )
xBrowse( oCn2 ) //para ver el objeto conexi贸n

Pero cuando intento verr esta conexi贸n recibo este error:


Here, the problem is not with ADO connection.
The real problem is with the function XBrowse(...) (or XBROWSER command).

We sincerely regret this inconvenience.

Due to a bug we introduced inadvertently in the recent versions, XBrowse( <anyOleObject> ), including RecordSet objects is failing with the above runtime error.

We suggest you to fix the bug.
Open fwh\source\function\xbrowser.prg
You will find this code near line no. 101 depending on your FWH version.
Code (fw): Select all Collapse
   if ValType( uData ) == "H" .or. ( ValType( uData ) == "O" .and. uData:IsKindOf( "TLINKLIST" ) )
      lAutoFit    := .t.
   endif


Either you comment out these 3 lines of code entirely or replace them with the following lines of code.
Code (fw): Select all Collapse
   if ValType( uData ) == "H" .or. ( ValType( uData ) == "O" .and. ;
      __ObjHasMethod( uData, "ISKINDOF" ) .and. uData:IsKindOf( "TLINKLIST" ) )
      lAutoFit    := .t.
   endif
Regards



G. N. Rao.

Hyderabad, India
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Pregunta sobre FW_OpenAdoConnection
Posted: Fri Oct 07, 2022 04:39 AM
Code (fw): Select all Collapse
oCn := FW_OpenADOConnection( "MSSQL,192.168.120.206,Sarubbi,sa,Came0303", .t. )
oCn := FW_OpenADOConnection( { "MSSQL","192.168.120.206","Sarubbi","sa","Came0303" }, .t. )
oCn := FW_OpenADOConnection( cConnectionString, .t. )


All the above are correct.
Regards



G. N. Rao.

Hyderabad, India
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Pregunta sobre FW_OpenAdoConnection
Posted: Fri Oct 07, 2022 05:01 AM
cSql:= "select kxp.corte, k.descripcion, p.id, p.descripcion from P0017 p inner join P0031 kxp on kxp.producto=p.codigo inner join P0029 k on k.codigo=kxp.corte"
oRs2:=oCn2:RowSet( cSql )
xBrowse( oRs2 )


ADO connection object has no method RowSet.

Use:
Code (fw): Select all Collapse
oRs := FW_OpenRecordSet( oCn, cSql ) // -> Ado RecordSet object
Regards



G. N. Rao.

Hyderabad, India
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Re: Pregunta sobre FW_OpenAdoConnection
Posted: Fri Oct 07, 2022 12:29 PM

Mr. Rao

Thanks a lot for your help, I'm starting with ado connections and your feedback is really appreciated.

Muchas gracias por su ayuda, estoy comenzando con las conexiones ado y su devoluci贸n es muy apreciada.

Thanks a lot,
Muchas gracias.

Saludos/Regards,

Jos茅 Murugosa

"Los errores en programaci贸n, siempre est谩n entre la silla, el teclado y la IA!!"
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Pregunta sobre FW_OpenAdoConnection
Posted: Fri Oct 07, 2022 12:46 PM
jose_murugosa wrote:Mr. Rao

Thanks a lot for your help, I'm starting with ado connections and your feedback is really appreciated.

Muchas gracias por su ayuda, estoy comenzando con las conexiones ado y su devoluci贸n es muy apreciada.

Thanks a lot,
Muchas gracias.

We assure our full support.
Regards



G. N. Rao.

Hyderabad, India
Posts: 74
Joined: Mon Jun 10, 2013 01:21 PM
Re: Pregunta sobre FW_OpenAdoConnection
Posted: Tue Oct 28, 2025 11:06 PM

Buenas tardes,

Consigo conectarme con la base de SQL e invocacion de store procedure.

oCn := FW_OpenAdoConnection( "MSSQL, 192.168.3.121, Pharmadispenser, Admin,Qwer1234", .T. )

oRs := FW_OpenRecordSet(oCn,"EXEC EnqueueDownload @Barcode = 7795381000055,@UserId = 72,@nChute = 2; THROW 51000, 'Test error', 1;")

xBrowse(oRs)

Muchas gracias,espero ayude... Mariano.

Posts: 26
Joined: Thu Mar 17, 2022 06:47 PM
Re: Pregunta sobre FW_OpenAdoConnection
Posted: Wed Oct 29, 2025 12:55 AM
If (oCn:=FW_OpenAdoConnection(cConexion,.T.)) == Nil
MsgInfo("隆 No fue posible conexi贸n a SQL SERVER !","Aviso") ; Return Nil
EndIf

oRs := FW_OpenRecordSet(oCn,"SELECT * FROM [tabla] ORDER BY Clave")
xBrowse(oRs) // Sin problema

si utilizo INNER JOIN
xBrowse(oRs) // Error

Para poder trabajar con oRs, no utilizo xBrowse, ya que el acceso a SQL Server es solo para consultas.
Posts: 74
Joined: Mon Jun 10, 2013 01:21 PM
Re: Pregunta sobre FW_OpenAdoConnection
Posted: Tue Nov 04, 2025 08:14 PM
Buenas tardes,
Me seria de mucha utilidad si alguno ha trabajado con este tipo de ejecucion de store procedures en una base de dato SQl usando ADO y ha obtenido correctamente el valor de retorno.

LINEA PARA USAR DESDE LA LINEA DE COMANDO,CMD:

sqlcmd -S 192.168.3.121 -d PharmaDispenserB2_0 -U sa -P Qwer1234 -Q "DECLARE @return_value int;EXEC @return_value = [dbo].[ProductQuantity] @Barcode = N'6666666666666', @UserId = 72;SELECT 'Return Value' = @return_value;"

eso devuelve ,

Return Value
------------
2

(1 rows affected)

Ahora mi consulta es como hacer utilizando esta linea para obtener el resultado de la ejecucion, devuelve un valor del tipo entero.
En ninguno de los dos casos logro obtener el valor "2"... solo veo el contenido del objeto como respuesta.

oRs := FW_OpenRecordSet(oCn,"[dbo].[ProductQuantity] @Barcode = N'6666666666666', @UserId = 72")
xbrowse(oRs)

oCn:Execute("EXEC [dbo].[ProductQuantity] @Barcode = N'6666666666666', @UserId = 72")
xbrowse(oCn)

Cualquier ayuda es bienvenida.
Muchas gracias, un saludo a todos, Mariano
Posts: 114
Joined: Fri Nov 24, 2006 09:03 PM
Re: Pregunta sobre FW_OpenAdoConnection
Posted: Wed Nov 05, 2025 07:28 PM

Include "Fivewin.ch"

// *********** //

Function Main()

Inserta_sql_datos('dato de prueba')

Return(Nil)

// *********** //

Static Function Inserta_sql_datos(Dato)

Local Cnx,oCmd,Rsl,oPar,Lg:=.T.

Connect_sql(@Cnx)

oCmd:=TOleAuto():New("ADODB.Command")

oCmd:ActiveConnection:=Cnx

oCmd:CommandType:=4 //** Stored Procedure

oCmd:CommandText:="pa_save_datos"

oPar:=oCmd:CreateParameter("Dato",129,1,24,Dato)

oCmd:Parameters:Append(oPar)

oPar:=oCmd:CreateParameter("Result",16,2,1)

oCmd:Parameters:Append(oPar)

oCmd:Execute()

Rsl:=oCmd:Parameters("Result"):Value

Cnx:Close()

MsgInfo('Resultado',Str(Rsl,2))

Return(Lg)

// *********** //

Function Connect_Sql(Cnx)

Local Cadena,Lg:=.T.

Cadena:='Provider=SQLNCLI11;Data Source=192.168.3.121;'+ ;

         'Network Library=DBMSSOCN;'+ ;

         'Initial Catalog=PharmaDispenserB2_0;User Id=sa'+ ;

         ';Password=Qwer1234'+';'

Cnx:=Toleauto():New("ADODB.Connection")

Cnx:Open(Cadena)

Return(Lg)

// *********** //