by jacgsoft » Mon Oct 03, 2022 9:56 pm
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('_'):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 ]************************** //