Para leer datos desde un Procedimiento en SQL-Server, si deseas leer de otro tipo de BAse de datos, solo tienes que cambiar la cadena de conexi贸n.
Include "Fivewin.ch"
Static Cnx
// ***[ JACGSOFT ]******* //
Function Main()
Local Fe1,Fe2,Cnx,Rds,Arayx:={},Imp,Tpr,Obs
Fe1:=20220101
Fe2:=20220131
Connect_sql(@Cnx,'Usuario','Clave')
Get_sql_detalle(Cnx,@Rds,Fe1,Fe2)
Do While !Rds:Bof() .And. !Rds:Eof()
_Imp_:=_Rds_:Fields('Precio'):Value
_Tpr_:=_Rds_:Fields('Tipo'):Value
_Obs_:=_Rds_:Fields('Observa'):Value
Aadd(Arayx,{_Rds_:Fields('Documento'):Value, ;
_Rds_:Fields('Apellido'):Value, ;
_Rds_:Fields('Nombre'):Value, ;
_Rds_:Fields('Sexo'):Value})
_Rds_:MoveNext()
Enddo
_Rds_:Close()
_Cnx_:Close()
Return(Nil)
// ***[ JACGSOFT ]******* //
Function Connect_Sql(Cnx,Usu,Cla)
Local Cadena,Lg:=.T.
Cadena:='Provider=sqloledb;Data Source=168.1.0.80;'+ ;
'Network Library=DBMSSOCN;'+ ;
'Initial Catalog=BD_PRUEBA;User Id='+Usu+ ;
';Password='+Cla+';'
Cnx:=Toleauto():New("ADODB.Connection")
Cnx:Open(Cadena)
Return(Lg)
// ***[ JACGSOFT ]******* //
Static Function Get_sql_detalle(Cnx,Rds,Fe1,Fe2)
Local oCmd,oPar
oCmd:=TOleAuto():New("ADODB.Command")
oCmd:ActiveConnection:=Cnx
oCmd:CommandType:=4
oCmd:CommandText:="dbo.PA_get_detalle"
oCmd:CommandTimeout:=0
oPar:=oCmd:CreateParameter("Fecini",3,1,8,Fe1)
oCmd:Parameters:Append(oPar)
oPar:=oCmd:CreateParameter("Fecfin",3,1,8,Fe2)
oCmd:Parameters:Append(oPar)
Rds:=oCmd:Execute()
Return(Nil)
// ***[ JACGSOFT ]******* //