Pregunta sobre FW_OpenAdoConnection

User avatar
jose_murugosa
Posts: 1279
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Pregunta sobre FW_OpenAdoConnection

Post by jose_murugosa »

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!!"
xmanuel
Posts: 817
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla
Contact:

Re: Pregunta sobre FW_OpenAdoConnection

Post by xmanuel »

Hola José mira aquí la cadena de conexión apropiada:
https://www.connectionstrings.com/
______________________________________________________________________________
Sevilla - Andalucía
User avatar
leandro
Posts: 1828
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Re: Pregunta sobre FW_OpenAdoConnection

Post by leandro »

A nosotros nos funciona de la siguiente manera:

Code: Select all | Expand


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/
[email protected]
[email protected]

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
horacio
Posts: 1367
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Pregunta sobre FW_OpenAdoConnection

Post by horacio »

Hola, me parece que los parámetros deberían ser de esta manera

Code: Select all | Expand


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


Saludos
User avatar
jose_murugosa
Posts: 1279
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Re: Pregunta sobre FW_OpenAdoConnection

Post by jose_murugosa »

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!!"
horacio
Posts: 1367
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Pregunta sobre FW_OpenAdoConnection

Post by horacio »

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: Select all | Expand


Fw_OpenAdoConnection(  { ""MSSQL", "Host", "BBDD", "user", "passw" }, lOnOff )

Saludos
User avatar
nageswaragunupudi
Posts: 10733
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Pregunta sobre FW_OpenAdoConnection

Post by nageswaragunupudi »

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: Select all | Expand

  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: Select all | Expand

  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
User avatar
nageswaragunupudi
Posts: 10733
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Pregunta sobre FW_OpenAdoConnection

Post by nageswaragunupudi »

Code: Select all | Expand

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
User avatar
nageswaragunupudi
Posts: 10733
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Pregunta sobre FW_OpenAdoConnection

Post by nageswaragunupudi »

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: Select all | Expand

oRs := FW_OpenRecordSet( oCn, cSql ) // -> Ado RecordSet object
Regards

G. N. Rao.
Hyderabad, India
User avatar
jose_murugosa
Posts: 1279
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Re: Pregunta sobre FW_OpenAdoConnection

Post by jose_murugosa »

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!!"
User avatar
nageswaragunupudi
Posts: 10733
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Pregunta sobre FW_OpenAdoConnection

Post by nageswaragunupudi »

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
mterraz
Posts: 75
Joined: Mon Jun 10, 2013 1:21 pm

Re: Pregunta sobre FW_OpenAdoConnection

Post by mterraz »

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.
Last edited by mterraz on Tue Nov 04, 2025 12:36 am, edited 1 time in total.
cpheraclio
Posts: 26
Joined: Thu Mar 17, 2022 6:47 pm

Re: Pregunta sobre FW_OpenAdoConnection

Post by cpheraclio »

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.
mterraz
Posts: 75
Joined: Mon Jun 10, 2013 1:21 pm

Re: Pregunta sobre FW_OpenAdoConnection

Post by mterraz »

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
User avatar
jacgsoft
Posts: 114
Joined: Fri Nov 24, 2006 9:03 pm
Location: Lima - Peru

Re: Pregunta sobre FW_OpenAdoConnection

Post by jacgsoft »

#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_)

// ***************************************************************** //
Post Reply