Bom dia, teoricamente quando importo o xml e ele possui apenas um item ele vem como string e quando tem mais de um item vem como array, e a validação seria assim:
If Valtype('oXml:_nfeProc:_NFe:_InfNfe:_DET[_nX]') == 'A'
nItens := Len(oXml:_nfeProc:_NFe:_InfNfe:_det) else
XmlNode2Arr(oXml:_nfeProc:_NFe:_InfNfe:_det,"_det")
nItens := Len(oXml:_nfeProc:_NFe:_InfNfe:_det)
Endif
Devo estar validando errado por que sempre retorno valtype == 'C'
raphael
Setembro 24, 2019, 8:58pm
2
Olá Miriam, bom dia!
Já tentou a função Type (https://tdn.totvs.com/display/tec/Type ) ?
Basicamente a diferença entre elas é a seguinte:
ValType valida o dado ou a variável
Ex.:
cVar := "TESTE"
IF ValType(cVar) == "C"
...
Ex.:
xVar := "TESTE"
Type( "xValue" ) // Resultado: "C" - Caracter
Type retorna ‘U’ para todos
se tem apenas 1 item é objeto e se tem mais de um item é array, mas como identifico isso no código?
foi bobeira minha. Valtype(oXml:_nfeProc:_NFe:_InfNfe:_DET) == ‘A’ deu certo
dei bobeira.
Valtype(oXml:_nfeProc:_NFe:_InfNfe:_DET) == 'A'
deu certo