Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Tenho uma situação em que o arquivo .TXT apresenta códigos no formato de notação de ponto flutuante. Ao ler a tabela em questão, o QV retira o código sem transforma-lo em inteiro. Ex. o código apresenta conteúdo '1,3487E+12' no arquivo, porém o código correspondente a esse valor é '1348698712849'. Necessito que o Qv leia a segunda opção.
Grato
Jacy,
Voce poderia disponibilizar o TXT para eu tentar te ajudar?
Jacy, no momento da carga, transforme este campo, que no exemplo vou chamar de 'campo' para numérico, ou texto (dependendo do seu futuro uso).
Aparentemente, isto que lhe ocorreu é uma transformação numérica que se dá pela 'máscara', que determina a precisão do número de caracteres que serão exibidos (que no seu caso, provavelmente deve ser '#,###)
Na carga, pode fazer as duas seguintes soluções:
Num(campo) AS campo
OU
Text(campo) AS campo -> caso este número nunca seja usado para expressões matemáticas no futuro.
Use o algoritmo abaixo para converter de ponto flutuante para decimal
load mantissa*pow(10,expoente) as valor;
LOAD SubField(F1,'E',1) as mantissa, SubField(F1,'E',2) as expoente INLINE [
F1
"1,3487E+12"
];
o único problema é que no arquivo se tiver 1,3487E+12 vai converter para 1348700000000 e não 1348698712849 porque no arquivo não tem toda a precisão
Jacy,
se usar evaluate() pode resolver
LOAD
Campo1,
evaluate( CampoNumeroGrande ) as Campo2 ,
.
.
......