LOCAL lowsrUsuario AS "XML Web Service"
* LOCAL lowsrUsuario AS "MSSOAP.SoapClient30"
* Do not remove or alter following line. It is used to support IntelliSense
for your XML Web service.
*__VFPWSDef__: lowsrUsuario = http://arturo/webservice/wsrusuario.asmx?
wsdl , wsrUsuario , wsrUsuarioSoap
LOCAL loException, lcErrorMsg, loWSHandler
TRY
loWSHandler = NEWOBJECT("WSHandler",IIF(VERSION(2)=0,"",HOME()+"FFC\")+"_ws3client.vcx")
lowsrUsuario = loWSHandler.SetupClient("http://arturo/webservice/wsrusuario.asmx?
wsdl", "wsrUsuario", "wsrUsuarioSoap")
* Call your XML Web service here. ex: leResult = lowsrUsuario.SomeMethod()
m.ltInit=SECONDS()
PUBLIC leResult
*************/ this is very fast, less than a second even with 20.000 records/********
leResult = lowsrUsuario.metConsultaSaldo()
loArturo = THISFORM.DATAENVIRONMENT.cursoradapter1
WITH loArturo
.DATASOURCETYPE = 'XML'
.SELECTCMD = m.leResult.ITEM(0).XML
.ALIAS = 'ca_xmlarturo'
ENDWITH
******* fill the cursor *************
***********/the problem is here with 5000 records takes 1 minute to fill the cursor /********
IF loArturo.CURSORFILL()
m.ltFin=SECONDS()
THISFORM.grid1.RECORDSOURCE= 'ca_xmlarturo'
THISFORM.grid1.AUTOFIT()
THISFORM.REFRESH()
m.lntotal=m.ltFin-m.ltInit
MESSAGEBOX(m.lntotal)
ELSE
MESSAGEBOX('No se pudo cargar el cursor')
ENDIF
CATCH TO loException
lcErrorMsg="Error: "+TRANSFORM(loException.Errorno)+" - "+loException.MESSAGE
DO CASE
CASE VARTYPE(lowsrUsuario)#"O"
* Handle SOAP error connecting to web service
CASE !EMPTY(lowsrUsuario.FaultCode)
* Handle SOAP error calling method
lcErrorMsg=lcErrorMsg+CHR(13)+lowsrUsuario.Detail
OTHERWISE
* Handle other error
ENDCASE
* Use for debugging purposes
MESSAGEBOX(lcErrorMsg)
FINALLY
ENDTRY
Thanks for your help
CarlosCarlos A. Miranda
E.I.S.lnc
President