Muy Buenas noches,
necesito hacer una consulta a una pagina web y extraer los datos de esta pagina. todo mi codigo funciona el detalle que esta pagina no es compatible a Internet Explore y hay momentos q la consulta aparece sin datos y muy pocas con datos pero la misma consultada en Chrome si da resultados. como usar el Chrome. muchas gracias de antemano
Function TCambioSunat(nMes,nAno)
local oIe,WshShell,oDoc,nPos, oForm, oObj,cName,oElem,oWait
Local mResultado :={}
local cUrl := "https://e-consulta.sunat.gob.pe/cl-at-ittipcam/tcS01Alias "
local mMes:= {"ene.","feb.","mar.","abr.","may.","jun.","jul.","ago.","sep.","oct.","nov.","dic."}
local cdia,cCompra,cVenta,lDia:=.F.
WaitOn("Espere, Iniciando conexion ...",@oWait )
SysRefresh()
HB_GCALL( .F. )
TRY
oIE:=CreateObject("InternetExplorer.Application")
CATCH oer
WaitOff( @oWait )
ShowError( oer )
MsgStop("Error al crear la conexion a internet","Error")
RETURN mResultado
END
WITH OBJECT oIE
:Visible := .F.
:ToolBar := .F.
:StatusBar := .F.
:MenuBar := .F.
:FullScreen := .F.
:Invoke( "Navigate", cURL )
END WITH
TRY
oIE:Navigate2( cUrl )
CATCH oErr
TRY
oIE:Navigate( cUrl )
CATCH oErro
END
END
WHILE oIE:Busy
SysWait(1)
SysRefresh()
Loop
END
HB_IDLESLEEP( 1 )
nPos:=0
WHILE oIE:ReadyState <> 4 .AND. nPos<20
HB_IDLESLEEP( 1 )
nPos++
END
IF nPos>=20
WaitOff( @oWait )
RETURN mResultado
ENDIF
SysWait(5)
oDoc:=oIE:Document()
oWait:Say(1,3,"Espere, Consultando periodo solicitado..."+Space(30) )
SysRefresh()
oDoc:All:Item("fecAsistenciaBusq",0):Value := mMes[Val(nMes)]+" "+nAno
oDoc:All:Item("btnBuscarAsistencias",0):Focus()
oDoc:All:Item("btnBuscarAsistencias",0):Click()
WHILE oIE:ReadyState <> 4 .AND. nPos<20
HB_IDLESLEEP( 1 )
nPos++
END
IF nPos>=20
WaitOff( @oWait )
RETURN mResultado
ENDIF
SysRefresh()
HB_IDLESLEEP( 2 )
TRY
*cCode := oIE:Document:body:innerHtml()
cCode := oIE:Document:body:innerText()
CATCH oError
WaitOff( @oWait )
RETURN mResultado
END
nLine:= MLCOUNT(cCode,,3,.t.)
iLinea := 0
For a:= 1 To nLine
SysRefresh()
linetxt:=Rtrim(memoline(cCode,80,a,3,.t.))
If Left(Rtrim(linetxt),6)="Sábado"
iLinea := a+1
Exit
EndIf
Next
ntxt:=""
ltcambio := .F.
otxt:=FCreate( op:temp+"tcambio.txt" )
For a:=iLinea TO nLine
oWait:Say( 1,3,"Espere, Convirtiendo response..."+Space(30) )
SysRefresh()
linetxt:=Rtrim(memoline(cCode,80,a,3,.t.))
If Left(Rtrim(linetxt),5)="Notas"
Exit
EndIf
If Left(Rtrim(linetxt),10)!=Space(10)
ntxt := Rtrim(memoline(cCode,80,a,3,.t.))
FWRITE(otxt,ntxt+CRLF )
EndIf
Next
FCLOSE( otxt )
cCode := Memoread(op:temp+"tcambio.txt" )
nLine:= MLCOUNT(cCode,,3,.t.)
For a:=1 TO nLine
oWait:Say( 1,3,"Espere, Extrayendo response..."+Space(30) )
SysRefresh()
linetxt:=Rtrim(memoline(cCode,80,a,3,.t.))
If IsDigit(Alltrim(Left( linetxt,2 )))
cDia :=Alltrim(Left( linetxt,2 ))
lDia := .T.
ElseIf !IsDigit(Alltrim(Left( linetxt,2 )))
If Left(linetxt,6)="Compra"
cCompra := Val(StrTran( Alltrim(linetxt),"Compra","" ))
Else
cVenta := Val(StrTran( Alltrim(linetxt),"Venta","" ))
lDia :=.F.
xfecha := ctod(StrZero(Val(cDia),2)+"/"+nMes+"/"+nAno )
Aadd(mResultado,{xfecha,cCompra,cventa})
Endif
EndIf
Next
oIE:Visible:=.F.
oIE:Quit()
WaitOff( @oWait )
RETURN mresultado