Pregunta sobre FW_OpenAdoConnection
- jose_murugosa
- Posts: 1279
- Joined: Mon Feb 06, 2006 4:28 pm
- Location: Uruguay
- Contact:
Pregunta sobre FW_OpenAdoConnection
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.
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!!"
José Murugosa
"Los errores en programación, siempre están entre la silla, el teclado y la IA!!"
Re: Pregunta sobre FW_OpenAdoConnection
Hola José mira aquí la cadena de conexión apropiada:
https://www.connectionstrings.com/
https://www.connectionstrings.com/
______________________________________________________________________________
Sevilla - Andalucía
Sevilla - Andalucía
Re: Pregunta sobre FW_OpenAdoConnection
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) ]
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) ]
Re: Pregunta sobre FW_OpenAdoConnection
Hola, me parece que los parámetros deberían ser de esta manera
Saludos
Code: Select all | Expand
oCn2 := FW_OpenADOConnection( { "MSSQL","192.168.120.206","Sarubbi","sa","Came0303" }, .t. )
Saludos
- jose_murugosa
- Posts: 1279
- Joined: Mon Feb 06, 2006 4:28 pm
- Location: Uruguay
- Contact:
Re: Pregunta sobre FW_OpenAdoConnection
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
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!!"
José Murugosa
"Los errores en programación, siempre están entre la silla, el teclado y la IA!!"
Re: Pregunta sobre FW_OpenAdoConnection
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é.
Saludos
Code: Select all | Expand
Fw_OpenAdoConnection( { ""MSSQL", "Host", "BBDD", "user", "passw" }, lOnOff )
Saludos
- nageswaragunupudi
- Posts: 10733
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: Pregunta sobre FW_OpenAdoConnection
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
G. N. Rao.
Hyderabad, India
- nageswaragunupudi
- Posts: 10733
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: Pregunta sobre FW_OpenAdoConnection
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
G. N. Rao.
Hyderabad, India
- nageswaragunupudi
- Posts: 10733
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: Pregunta sobre FW_OpenAdoConnection
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 objectRegards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
- jose_murugosa
- Posts: 1279
- Joined: Mon Feb 06, 2006 4:28 pm
- Location: Uruguay
- Contact:
Re: Pregunta sobre FW_OpenAdoConnection
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.
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!!"
José Murugosa
"Los errores en programación, siempre están entre la silla, el teclado y la IA!!"
- nageswaragunupudi
- Posts: 10733
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: Pregunta sobre FW_OpenAdoConnection
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
G. N. Rao.
Hyderabad, India
Re: Pregunta sobre FW_OpenAdoConnection
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.
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
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.
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.
Re: Pregunta sobre FW_OpenAdoConnection
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
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
Re: Pregunta sobre FW_OpenAdoConnection
#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_)
// ***************************************************************** //
// ***************************************************************** //
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_)
// ***************************************************************** //