- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- [RESOLVIDO] Verificar se atributo existe em objeto WS
×
Linguagem de Programação ADVPL
Perguntas [RESOLVIDO] Verificar se atributo existe em objeto WS
- kanaamlrr
- Autor do Tópico
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
11 anos 6 meses atrás #13194
por kanaamlrr
[RESOLVIDO] Verificar se atributo existe em objeto WS foi criado por kanaamlrr
Bom dia a todos,
Estou desenvolvendo uma rotina com um WebService e apareceu um problema aqui e não estou conseguindo resolver.
No caso eu tenho no retorno do WebService que estou consumindo a seguinte estrutura:
Esse atributo _SP_LERMENSSAGENS quando retorna apenas 1 registro, retorna como objeto, e quando tem mais que 1 registro retorna como array, com isso eu fiz a seguinte tratativa que está funcionando corretamente.
Até ai tudo bem, mas quando não existe nenhum registro para retornar, o objeto retorna sem a propriedade _NEWDATASET, dessa forma
oWs:oWsLerMensagensResult:_LerMensagensResult:_DIFFGR_DIFFGRAM
Gostaria de saber se alguém conhece uma forma que eu possa verificar se essa propriedade _NEWDATASET existe para o objeto _DIFFGR_DIFFGRAM.
Já tentei utilizando as funções ValType e Type e não tive sucesso, ele sempre retornou o erro de propriedade inválida.
Desde já agradeço a atenção.
Estou desenvolvendo uma rotina com um WebService e apareceu um problema aqui e não estou conseguindo resolver.
No caso eu tenho no retorno do WebService que estou consumindo a seguinte estrutura:
oWs:oWsLerMensagensResult:_LerMensagensResult:_DIFFGR_DIFFGRAM:_NEWDATASET:_SP_LERMENSSAGENS
Esse atributo _SP_LERMENSSAGENS quando retorna apenas 1 registro, retorna como objeto, e quando tem mais que 1 registro retorna como array, com isso eu fiz a seguinte tratativa que está funcionando corretamente.
If ValType(oWs:oWsLerMensagensResult:_LerMensagensResult:_DIFFGR_DIFFGRAM:_NEWDATASET:_SP_LERMENSSAGENS)=="O"
aAdd(aDados, oWs:oWsLerMensagensResult:_LerMensagensResult:_DIFFGR_DIFFGRAM:_NEWDATASET:_SP_LERMENSSAGENS)
Else
aDados := oWs:oWsLerMensagensResult:_LerMensagensResult:_DIFFGR_DIFFGRAM:_NEWDATASET:_SP_LERMENSSAGENS
EndIf
Até ai tudo bem, mas quando não existe nenhum registro para retornar, o objeto retorna sem a propriedade _NEWDATASET, dessa forma
oWs:oWsLerMensagensResult:_LerMensagensResult:_DIFFGR_DIFFGRAM
Gostaria de saber se alguém conhece uma forma que eu possa verificar se essa propriedade _NEWDATASET existe para o objeto _DIFFGR_DIFFGRAM.
Já tentei utilizando as funções ValType e Type e não tive sucesso, ele sempre retornou o erro de propriedade inválida.
Desde já agradeço a atenção.
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Autor do Tópico
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
11 anos 6 meses atrás #13205
por kanaamlrr
Respondido por kanaamlrr no tópico [RESOLVIDO] Verificar se atributo existe em objeto WS
resolvi fazendo um count dos nodes filhos da seguinte forma:
If XmlChildCount(oWs:oWsLerMensagensResult:_LerMensagensResult:_DIFFGR_DIFFGRAM) > 2
If ValType(oWs:oWsLerMensagensResult:_LerMensagensResult:_DIFFGR_DIFFGRAM:_NEWDATASET:_SP_LERMENSSAGENS)=="O"
aAdd(aDados, oWs:oWsLerMensagensResult:_LerMensagensResult:_DIFFGR_DIFFGRAM:_NEWDATASET:_SP_LERMENSSAGENS)
Else
aDados := oWs:oWsLerMensagensResult:_LerMensagensResult:_DIFFGR_DIFFGRAM:_NEWDATASET:_SP_LERMENSSAGENS
EndIf
Else
ConOut(PadC("Não existem atendimentos" ,50))
EndIf
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- [RESOLVIDO] Verificar se atributo existe em objeto WS
Tempo para a criação da página:0.107 segundos