Fonte - forum - Adriano
//Webservice
//############################################################################
XML_Retorno is string = ""
RetornoXml is a ws_mobile_configResponse
RetornoXml = ws_mobile_config(29121974,4199491800,"SELECT")
XML_Retorno = RetornoXml.ws_mobile_configResult
XML_RetornoBuffer is Buffer = UTF8ToAnsi(XML_Retorno)
//############################################################################
XmlDoc is XMLDocument
XmlDoc = XMLOpen(XML_RetornoBuffer,fromString)
NoXml is xmlNode
FOR EACH NoXml OF XmlDoc.Xml.Retorno on NoXml
t010_MobileConfig.t010_Codigo = XmlDoc.Xml.Retorno.NoXml.NG0030_Codigo
t010_MobileConfig.t010_Descricao = XmlDoc.Xml.Retorno.NoXml.NG0030_Descricao
t010_MobileConfig.t010_Valor = XmlDoc.Xml.Retorno.NoXml.NG0030_Valor
t010_MobileConfig.t010_Status = XmlDoc.Xml.Retorno.NoXml.NG0030_Status
HAdd(t010_MobileConfig)
END
-------
//Webservice
//############################################################################
XML_Retorno is string = ""
Retorno is a ws_treino_select_bairroResponse
Retorno = ws_treino_select_bairro(29121974,4199491800,"SELECT")
XML_Retorno = Retorno.ws_treino_select_bairroResult
Info(XML_Retorno)
//############################################################################
Retorno DO Select
<Xml>
<Retorno>
<NoXml id="1"><codigo>1</codigo><bairro>CENTRO</bairro></NoXml> //Registro 1
<NoXml id="2"><codigo>2</codigo><bairro>SAO CRISTOVAO</bairro></NoXml> //Registro 2
<NoXml id="3"><codigo>3</codigo><bairro>CAPAO DA IMBUIA</bairro></NoXml> //Registro 3
<TOTAL>3</TOTAL>
</Retorno>
</Xml>
<Xml><Retorno><NoXml id="1"><codigo>1</codigo><bairro>CENTRO</bairro></NoXml><NoXml id="2"><codigo>2</codigo><bairro>SAO CRISTOVAO</bairro></NoXml><NoXml id="3"><codigo>3</codigo><bairro>CAPAO DA IMBUIA</bairro></NoXml><NoXml id="4"><codigo>4</codigo><bairro>Taruma</bairro></NoXml><TOTAL>4</TOTAL></Retorno></Xml>
//-----------------------------------------------------------------------------------------------------------------
//Modelo de consumo de webservice
//############################################################################
XML_Retorno is string = "" //Variavel que pega o resultado e exibe na tela
Retorno is a ws_treino_select_bairroResponse //Response = Envio
Retorno = ws_treino_select_bairro(29121974,4199491800,"SELECT")
XML_Retorno = Retorno.ws_treino_select_bairroResult //Result = Resultado
Info(XML_Retorno)
EDT_Retorno = XML_Retorno
//############################################################################
Retorno DO Insert
<Xml>
<Retorno>
<NoXml id="0">
<OK>Gravou com Sucesso!</OK> //Incluiu com sucesso
</NoXml>
<TOTAL>1</TOTAL>
</Retorno>
</Xml>
//-----------------------------------------------------------------------------------------------------------------
//Modelo de consumo de webservice
//############################################################################
XML_Retorno is string = "" //Variavel que pega o resultado e exibe na tela
Retorno is a ws_treino_insert_bairroResponse
Retorno = ws_treino_insert_bairro(29121974,4199491800,"INSERT",EDT_Codigo,EDT_Bairro)
XML_Retorno = Retorno.ws_treino_insert_bairroResult //Result = Resultado
Info(XML_Retorno)
EDT_Retorno = XML_Retorno
//############################################################################
<Xml><Retorno><ng0020_bairro id="0"><OK>Gravou com Sucesso!</OK></ng0020_bairro><TOTAL>1</TOTAL></Retorno></Xml><ng0020_bairro id="0"><ERRO>ACAO INVALIDA</ERRO></ng0020_bairro>
<Xml>
<Retorno>
<NoXml id="1"><codigo>1</codigo><bairro>CENTRO</bairro></NoXml>
<NoXml id="2"><codigo>2</codigo><bairro>SAO CRISTOVAO</bairro></NoXml>
<NoXml id="3"><codigo>3</codigo><bairro>CAPAO DA IMBUIA</bairro></NoXml>
<NoXml id="4"><codigo>4</codigo><bairro>Boqueirao</bairro></NoXml> //-----> Registro Alterado com sucesso
<TOTAL>4</TOTAL>
</Retorno>
</Xml>
//------------------------------------------------------------------------------------------------------------------
//Modelo de consumo de webservice
//############################################################################
XML_Retorno is string = "" //Variavel que pega o resultado e exibe na tela
Retorno is a ws_treino_delete_bairroResponse //Vaio via Drag in Drop
Retorno = ws_treino_delete_bairro(29121974,4199491800,"DELETE") // Executa o comando de exclusao dos registros
XML_Retorno = Retorno.ws_treino_delete_bairroResult //Result = Resultado
Info(XML_Retorno)
EDT_Retorno = XML_Retorno //Exibe o retorno
//############################################################################
<Xml><Retorno><ng0020_bairro id="0"><OK>Deletou com Sucesso!</OK></ng0020_bairro><TOTAL>1</TOTAL></Retorno></Xml><ng0020_bairro id="0"><ERRO>ACAO INVALIDA</ERRO></ng0020_bairro>
//Pelo Select Obtenho que nao tenho mais registros
<NoXml id="0"><Erro>NENHUM REGISTRO!</Erro></NoXml><TOTAL>0</TOTAL></Retorno></Xml>
//-------------------------------
Segue aqui outro exemplo de procedures, podem converter para classe esses códigos automatizando assim a leitura.
<Xml>
<Retorno>
<NoXml id="1">
<TJogadorID>2</TJogadorID>
<TNome>Neri</TNome>
<TClassificacao>600</TClassificacao>
<TFone>1</TFone>
<TFoto>1</TFoto>
</NoXml>
<NoXml id="2">
<TJogadorID>1</TJogadorID>
<TNome>Adriano Boller</TNome>
<TClassificacao>1</TClassificacao>
<TFone>1</TFone>
<TFoto>1</TFoto>
</NoXml>
<Total>2</Total>
</Retorno>
</Xml>
<Retorno>
<NoXml id="1">
<TJogadorID>2</TJogadorID>
<TNome>Neri</TNome>
<TClassificacao>600</TClassificacao>
<TFone>1</TFone>
<TFoto>1</TFoto>
</NoXml>
<NoXml id="2">
<TJogadorID>1</TJogadorID>
<TNome>Adriano Boller</TNome>
<TClassificacao>1</TClassificacao>
<TFone>1</TFone>
<TFoto>1</TFoto>
</NoXml>
<Total>2</Total>
</Retorno>
</Xml>
CODIGO GLOBAL CODE
//Global do Projeto
arrXml_Tags is array of strings //Nome das Tags
arrXml_TagResult is array of strings //Conteudo das Tags Resultado
gsGloXmlResultado is string = ""
GloTotalRegistros is int = 0
GloXml is string
arrXml_Tags is array of strings //Nome das Tags
arrXml_TagResult is array of strings //Conteudo das Tags Resultado
gsGloXmlResultado is string = ""
GloTotalRegistros is int = 0
GloXml is string
//OPEN DA JANELA
pws_listar_jogador(0)
ws_listar_jogadores()
pws_listar_jogador(0)
ws_listar_jogadores()
Procedure ArrayDeleteDuplicateBoller(ArrayResultado is array of strings)
x, NaoAchou is int = 0
ArrayResultadoNovo is array of strings
nTotal is int = ArrayCount(ArrayResultado)
LOOP (nTotal)
x += 1
NaoAchou = ArraySeek(ArrayResultadoNovo,asLinearFirst,ArrayResultado[x])
IF NaoAchou = -1
Add(ArrayResultadoNovo,ArrayResultado[x])
END
END
RESULT (ArrayResultadoNovo)
x, NaoAchou is int = 0
ArrayResultadoNovo is array of strings
nTotal is int = ArrayCount(ArrayResultado)
LOOP (nTotal)
x += 1
NaoAchou = ArraySeek(ArrayResultadoNovo,asLinearFirst,ArrayResultado[x])
IF NaoAchou = -1
Add(ArrayResultadoNovo,ArrayResultado[x])
END
END
RESULT (ArrayResultadoNovo)
Procedure IdentificarTagsNoXml(XmlConteudo)
x, Inicial, Final, Tamanho is int = 0
Tag, Anterior is string = ""
IF XmlConteudo <> "" THEN
XmlConteudo = NoAccent(XmlConteudo)
XmlConteudo = Replace(XmlConteudo,CR,"")
XmlConteudo = Replace(XmlConteudo,Charact(13),"")
XmlConteudo = Replace(XmlConteudo,Charact(10),"")
Total is int = Length(XmlConteudo)
LOOP (Total)
x += 1
IF XmlConteudo[[x]] = "<"
Inicial = x+1
ELSE IF XmlConteudo[[x]] = ">"
Final = x
IF Final <= Inicial THEN
Final = 0
END
END
IF Inicial > 0 AND Final > 0 AND Final > Inicial
Tamanho = Final - Inicial
Tag = Middle(XmlConteudo,Inicial,Tamanho)
//IGNORAR AS TAGS DE FECHAMENTO E ID
IF Middle(Tag,1,1) = "/" OR PositionOccurrence(Upper(Tag),"ID=",firstRank,FromBeginning) > 0
Tag = ""
END
//VALIDA TAGS DO NÓ
IF Tag <> "" AND Tamanho > 0 AND Anterior <> Tag AND Upper(Tag) <> "XML" AND Upper(Tag) <> "RETORNO" AND Upper(Tag) <> "TOTAL"
Anterior = Tag
//DEBUG
//add(arrXml_Tags,Tag +" / "+ Inicial +" / "+ Final +" / "+ Tamanho )
//INFO(TAG)
Add(arrXml_Tags,Tag) //VAR GLOBAL: arrXml_Tags
END
END
END
END
//INSIRA O TARGETCODE
//TARGET CODE ANDROID
arrXml_Tags = ArrayDeleteDuplicateBoller(arrXml_Tags)
//TARGET CODE IOS
ArrayDeleteDuplicate(arrXml_Tags,tccIgnoreSpace)
//TARGET CODE
RESULT (arrXml_Tags)
x, Inicial, Final, Tamanho is int = 0
Tag, Anterior is string = ""
IF XmlConteudo <> "" THEN
XmlConteudo = NoAccent(XmlConteudo)
XmlConteudo = Replace(XmlConteudo,CR,"")
XmlConteudo = Replace(XmlConteudo,Charact(13),"")
XmlConteudo = Replace(XmlConteudo,Charact(10),"")
Total is int = Length(XmlConteudo)
LOOP (Total)
x += 1
IF XmlConteudo[[x]] = "<"
Inicial = x+1
ELSE IF XmlConteudo[[x]] = ">"
Final = x
IF Final <= Inicial THEN
Final = 0
END
END
IF Inicial > 0 AND Final > 0 AND Final > Inicial
Tamanho = Final - Inicial
Tag = Middle(XmlConteudo,Inicial,Tamanho)
//IGNORAR AS TAGS DE FECHAMENTO E ID
IF Middle(Tag,1,1) = "/" OR PositionOccurrence(Upper(Tag),"ID=",firstRank,FromBeginning) > 0
Tag = ""
END
//VALIDA TAGS DO NÓ
IF Tag <> "" AND Tamanho > 0 AND Anterior <> Tag AND Upper(Tag) <> "XML" AND Upper(Tag) <> "RETORNO" AND Upper(Tag) <> "TOTAL"
Anterior = Tag
//DEBUG
//add(arrXml_Tags,Tag +" / "+ Inicial +" / "+ Final +" / "+ Tamanho )
//INFO(TAG)
Add(arrXml_Tags,Tag) //VAR GLOBAL: arrXml_Tags
END
END
END
END
//INSIRA O TARGETCODE
//TARGET CODE ANDROID
arrXml_Tags = ArrayDeleteDuplicateBoller(arrXml_Tags)
//TARGET CODE IOS
ArrayDeleteDuplicate(arrXml_Tags,tccIgnoreSpace)
//TARGET CODE
RESULT (arrXml_Tags)
Procedure LeituraGravacaoXml(XmlRetorno,Tabela)
buf_Foto is Buffer = ""
//Processamento
//<login_id>3</login_id>
//<login_email>teste@teste.com</login_email>
//<login_nome>Usuario teste</login_nome>
//<login_senha>123</login_senha>
//<login_status>1</login_status>
//<login_admin>0</login_admin>
LocalizarTagsEmXml(XmlRetorno)
//Exibindo o resultado
XmlRetorno = ""
X, T is int = 0
QTD_TAGS is int = ArrayCount(arrXml_Tags)
QTD_Resultados is int = ArrayCount(arrXml_TagResult)
IF Tabela = "TJogador"
HDeleteAll(TJogador)
//else...
END
LOOP (QTD_Resultados)
X += 1
T += 1
XmlRetorno += arrXml_Tags[T] + ": " + arrXml_TagResult[X] + CR
IF Tabela = "TJogador"
IF T = 1
TJogador.TJogadorID = arrXml_TagResult[X]
ELSE IF T = 2
TJogador.TNome = arrXml_TagResult[X]
ELSE IF T = 3
TJogador.TClassificacao = arrXml_TagResult[X]
ELSE IF T = 4
TJogador.TFone = arrXml_TagResult[X]
ELSE IF T = 5
buf_Foto = arrXml_TagResult[X]
TJogador.TFoto = Uncrypt(buf_Foto,"",cryptNone)
HAdd(TJogador)
END
//else...
END
IF T = QTD_TAGS THEN
T = 0
XmlRetorno += CR
END
END
buf_Foto is Buffer = ""
//Processamento
//<login_id>3</login_id>
//<login_email>teste@teste.com</login_email>
//<login_nome>Usuario teste</login_nome>
//<login_senha>123</login_senha>
//<login_status>1</login_status>
//<login_admin>0</login_admin>
LocalizarTagsEmXml(XmlRetorno)
//Exibindo o resultado
XmlRetorno = ""
X, T is int = 0
QTD_TAGS is int = ArrayCount(arrXml_Tags)
QTD_Resultados is int = ArrayCount(arrXml_TagResult)
IF Tabela = "TJogador"
HDeleteAll(TJogador)
//else...
END
LOOP (QTD_Resultados)
X += 1
T += 1
XmlRetorno += arrXml_Tags[T] + ": " + arrXml_TagResult[X] + CR
IF Tabela = "TJogador"
IF T = 1
TJogador.TJogadorID = arrXml_TagResult[X]
ELSE IF T = 2
TJogador.TNome = arrXml_TagResult[X]
ELSE IF T = 3
TJogador.TClassificacao = arrXml_TagResult[X]
ELSE IF T = 4
TJogador.TFone = arrXml_TagResult[X]
ELSE IF T = 5
buf_Foto = arrXml_TagResult[X]
TJogador.TFoto = Uncrypt(buf_Foto,"",cryptNone)
HAdd(TJogador)
END
//else...
END
IF T = QTD_TAGS THEN
T = 0
XmlRetorno += CR
END
END
Procedure LocalizarTagsEmXml(XML_Retorno is string)
//Variaveis
nXposicaoinicial is int = 0
nXposicaofinal is int = 0
X is int = 0
//Exemplo
//<Xml>
//<Retorno>
//<NoXml ID="3"> // <------------------------ motivo do erro
//<login_id>3</login_id>
//<login_email>teste@teste.com</login_email>
//<login_nome>Usuario teste</login_nome>
//<login_senha>123</login_senha>
//<login_status>1</login_status>
//<login_admin>0</login_admin>
//</NoXml> // <------------------------ motivo do erro
//<Total>1</Total>
//</Retorno>
//</Xml>
//iOS - Apple (iPhone / iPad / iPod)
IF IniOSMode() = True THEN
T, N is int = 0
RegistroXml is string
NoXml is string
i is int = 1
NoXml = XMLExtractString(XML_Retorno,"NoXml",i)
//FUNCAO IDENTIFICA TAG
IdentificarTagsNoXml(XML_Retorno)
nQtde_Registros is int = XMLExtractString(gsGloXmlResultado,"Total") //5
LOOP (nQtde_Registros)
T = 0
N += 1
RegistroXml = PegaNoXml(XML_Retorno,N)
NoXml = XMLExtractString(RegistroXml,"NoXml",i)
FOR EACH stag OF arrXml_Tags //VAR GLOBAL
temp is string = XMLExtractString(NoXml,stag)
Add(arrXml_TagResult, temp )
END
END
//Android
ELSE IF InAndroidMode() = True
T, N is int = 0
IdentificarTagsNoXml(XML_Retorno) //FUNCAO IDENTIFICA TAG
nQtde_tags is int = ArrayCount(arrXml_Tags)
TagRegistro, RegistroXml is string
TagValor is string
nQtde_Registros is int = XMLExtractString(gsGloXmlResultado,"Total") //5
LOOP (nQtde_Registros)
T = 0
N += 1
RegistroXml = PegaNoXml(XML_Retorno,N) //corta
LOOP (nQtde_tags)
T += 1
TagRegistro = arrXml_Tags[T]
TagValor = XMLExtractString(RegistroXml,TagRegistro)
IF TagValor <> ""
Add(arrXml_TagResult,TagValor)
END
END
END
END
RESULT arrXml_TagResult
//Variaveis
nXposicaoinicial is int = 0
nXposicaofinal is int = 0
X is int = 0
//Exemplo
//<Xml>
//<Retorno>
//<NoXml ID="3"> // <------------------------ motivo do erro
//<login_id>3</login_id>
//<login_email>teste@teste.com</login_email>
//<login_nome>Usuario teste</login_nome>
//<login_senha>123</login_senha>
//<login_status>1</login_status>
//<login_admin>0</login_admin>
//</NoXml> // <------------------------ motivo do erro
//<Total>1</Total>
//</Retorno>
//</Xml>
//iOS - Apple (iPhone / iPad / iPod)
IF IniOSMode() = True THEN
T, N is int = 0
RegistroXml is string
NoXml is string
i is int = 1
NoXml = XMLExtractString(XML_Retorno,"NoXml",i)
//FUNCAO IDENTIFICA TAG
IdentificarTagsNoXml(XML_Retorno)
nQtde_Registros is int = XMLExtractString(gsGloXmlResultado,"Total") //5
LOOP (nQtde_Registros)
T = 0
N += 1
RegistroXml = PegaNoXml(XML_Retorno,N)
NoXml = XMLExtractString(RegistroXml,"NoXml",i)
FOR EACH stag OF arrXml_Tags //VAR GLOBAL
temp is string = XMLExtractString(NoXml,stag)
Add(arrXml_TagResult, temp )
END
END
//Android
ELSE IF InAndroidMode() = True
T, N is int = 0
IdentificarTagsNoXml(XML_Retorno) //FUNCAO IDENTIFICA TAG
nQtde_tags is int = ArrayCount(arrXml_Tags)
TagRegistro, RegistroXml is string
TagValor is string
nQtde_Registros is int = XMLExtractString(gsGloXmlResultado,"Total") //5
LOOP (nQtde_Registros)
T = 0
N += 1
RegistroXml = PegaNoXml(XML_Retorno,N) //corta
LOOP (nQtde_tags)
T += 1
TagRegistro = arrXml_Tags[T]
TagValor = XMLExtractString(RegistroXml,TagRegistro)
IF TagValor <> ""
Add(arrXml_TagResult,TagValor)
END
END
END
END
RESULT arrXml_TagResult
Procedure PegaNoXml(RetornoXml, NoXmlId) //outra procedure para facilitar, que nem dizia Jac, vamos por partes...
Inicio, Final, Tamanho is int = 0
NoXml is string = "<Xml><Retorno>"
IF RetornoXml <> "" AND NoXmlId > 0 THEN
Inicio = PositionOccurrence(RetornoXml,"<NoXml ID="+Charact(34)+NoXmlId+Charact(34)+">",firstRank,FromBeginning)
IF Inicio = 0 THEN
Inicio = PositionOccurrence(RetornoXml,"<NoXml id="+Charact(34)+NoXmlId+Charact(34)+">",firstRank,FromBeginning)
IF Inicio = 0 THEN
Inicio = PositionOccurrence(RetornoXml,"<NoXml Id="+Charact(34)+NoXmlId+Charact(34)+">",firstRank,FromBeginning)
END
END
IF NoXmlId = 1
Final = PositionOccurrence(RetornoXml,"</NoXml>",firstRank,FromBeginning)
ELSE
Final = PositionOccurrence(RetornoXml,"</NoXml>",nextRank,FromBeginning)
END
Tamanho = Final - Inicio
NoXml += Middle(RetornoXml,Inicio,Tamanho)
END
NoXml += "</NoXml></Retorno></Xml>"
NoXml = Replace(NoXml,CR,"")
NoXml = Replace(NoXml,Charact(13),"")
NoXml = Replace(NoXml,Charact(10),"")
RESULT NoXml
Inicio, Final, Tamanho is int = 0
NoXml is string = "<Xml><Retorno>"
IF RetornoXml <> "" AND NoXmlId > 0 THEN
Inicio = PositionOccurrence(RetornoXml,"<NoXml ID="+Charact(34)+NoXmlId+Charact(34)+">",firstRank,FromBeginning)
IF Inicio = 0 THEN
Inicio = PositionOccurrence(RetornoXml,"<NoXml id="+Charact(34)+NoXmlId+Charact(34)+">",firstRank,FromBeginning)
IF Inicio = 0 THEN
Inicio = PositionOccurrence(RetornoXml,"<NoXml Id="+Charact(34)+NoXmlId+Charact(34)+">",firstRank,FromBeginning)
END
END
IF NoXmlId = 1
Final = PositionOccurrence(RetornoXml,"</NoXml>",firstRank,FromBeginning)
ELSE
Final = PositionOccurrence(RetornoXml,"</NoXml>",nextRank,FromBeginning)
END
Tamanho = Final - Inicio
NoXml += Middle(RetornoXml,Inicio,Tamanho)
END
NoXml += "</NoXml></Retorno></Xml>"
NoXml = Replace(NoXml,CR,"")
NoXml = Replace(NoXml,Charact(13),"")
NoXml = Replace(NoXml,Charact(10),"")
RESULT NoXml
Procedure pws_listar_jogador(id is int)
//LIMPAR VARIAVEIS GLOBAIS
ArrayDeleteAll(arrXml_Tags)
ArrayDeleteAll(arrXml_TagResult)
gsGloXmlResultado = ""
GloTotalRegistros = 0
GloXml = ""
//leitura do webservice
Xml_retorno is string
retornoXml is a ws_listar_jogadorResponse
retornoXml = ws_listar_jogador("20872",id)
Xml_retorno = retornoXml.ws_listar_jogadorResult
Xml_retorno = UTF8ToAnsi(Xml_retorno) //vai trazer tudo foto etc
gsGloXmlResultado = Xml_retorno
GloTotalRegistros = XMLExtractString(gsGloXmlResultado,"Total") //5
//<Xml>
// <Retorno>
// <NoXml id="1">
// <TJogadorID>2</TJogadorID>
// <TNome>Neri</TNome>
// <TClassificacao>600</TClassificacao>
// <TFone>1</TFone>
// <TFoto>1</TFoto>
// </NoXml>
// <NoXml id="2">
// <TJogadorID>1</TJogadorID>
// <TNome>Adriano Boller</TNome>
// <TClassificacao>1</TClassificacao>
// <TFone>1</TFone>
// <TFoto>1</TFoto>
// </NoXml>
// <Total>2</Total>
// </Retorno>
// </Xml>
//leitura do xml
HDeleteAll(TJogador)
LeituraGravacaoXml(Xml_retorno,"TJogador")
//LIMPAR VARIAVEIS GLOBAIS
ArrayDeleteAll(arrXml_Tags)
ArrayDeleteAll(arrXml_TagResult)
gsGloXmlResultado = ""
GloTotalRegistros = 0
GloXml = ""
//leitura do webservice
Xml_retorno is string
retornoXml is a ws_listar_jogadorResponse
retornoXml = ws_listar_jogador("20872",id)
Xml_retorno = retornoXml.ws_listar_jogadorResult
Xml_retorno = UTF8ToAnsi(Xml_retorno) //vai trazer tudo foto etc
gsGloXmlResultado = Xml_retorno
GloTotalRegistros = XMLExtractString(gsGloXmlResultado,"Total") //5
//<Xml>
// <Retorno>
// <NoXml id="1">
// <TJogadorID>2</TJogadorID>
// <TNome>Neri</TNome>
// <TClassificacao>600</TClassificacao>
// <TFone>1</TFone>
// <TFoto>1</TFoto>
// </NoXml>
// <NoXml id="2">
// <TJogadorID>1</TJogadorID>
// <TNome>Adriano Boller</TNome>
// <TClassificacao>1</TClassificacao>
// <TFone>1</TFone>
// <TFoto>1</TFoto>
// </NoXml>
// <Total>2</Total>
// </Retorno>
// </Xml>
//leitura do xml
HDeleteAll(TJogador)
LeituraGravacaoXml(Xml_retorno,"TJogador")
RESULTADO
Publicado em abril, 06 2016 - 7:14 PM
|
Prezados,
Na janela do aplicativo em local procedures:
Na janela do aplicativo em local procedures:
Procedure ws_listar_jogadores()
x is int = 0
ok, registro is boolean
ok = HExecuteQuery(QRY_ranking_jogadores,hQueryDefault)
IF ok = True
FOR EACH QRY_ranking_jogadores
x += 1
ok = HExecuteQuery(QRY_Update_Ranking,hQueryDefault,x,QRY_ranking_jogadores.TJogadorID)
END
END
ok = HExecuteQuery(QRY_ranking_jogadores,hQueryDefault)
IF ok = True THEN
FOR EACH QRY_ranking_jogadores
registro = HFound(QRY_ranking_jogadores)
IF registro = True THEN
LooperAdd(LOOP_Ranking, QRY_ranking_jogadores.TRanking + TAB + QRY_ranking_jogadores.TNome + TAB + QRY_ranking_jogadores.TFone + TAB + QRY_ranking_jogadores.TClassificacao + TAB + QRY_ranking_jogadores.TFoto)
END
END
END
LooperDisplay(WIN_Lista_Jogadores.LOOP_Ranking,taReExecuteQuery)
LooperDisplay(WIN_Lista_Jogadores.LOOP_Ranking,taInit)
x is int = 0
ok, registro is boolean
ok = HExecuteQuery(QRY_ranking_jogadores,hQueryDefault)
IF ok = True
FOR EACH QRY_ranking_jogadores
x += 1
ok = HExecuteQuery(QRY_Update_Ranking,hQueryDefault,x,QRY_ranking_jogadores.TJogadorID)
END
END
ok = HExecuteQuery(QRY_ranking_jogadores,hQueryDefault)
IF ok = True THEN
FOR EACH QRY_ranking_jogadores
registro = HFound(QRY_ranking_jogadores)
IF registro = True THEN
LooperAdd(LOOP_Ranking, QRY_ranking_jogadores.TRanking + TAB + QRY_ranking_jogadores.TNome + TAB + QRY_ranking_jogadores.TFone + TAB + QRY_ranking_jogadores.TClassificacao + TAB + QRY_ranking_jogadores.TFoto)
END
END
END
LooperDisplay(WIN_Lista_Jogadores.LOOP_Ranking,taReExecuteQuery)
LooperDisplay(WIN_Lista_Jogadores.LOOP_Ranking,taInit)
Nenhum comentário:
Postar um comentário