Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Extrator - Protheus

Bom dia Amigos,

Estou com uma falha em meu extrator, abaixo o script que estou utilizando para extrair a tabela SA2 (Fornecedores) do Protheus.

SA2010:

  SQL SELECT

  *

  FROM DB2."SA2010"

  WHERE D_E_L_E_T_ <> '*'

STORE SA2010 INTO  SA2010.qvd

O problema está na coluna A2_COD, abaixo a comparação entre o Banco de dados e o QVD.

BD              |      QVD

003433        |     3433

3433           |     3433

004158        |     004158

009900        |     009900

Em alguns momentos ele tira os 0 da esquerda, e em outros momentos não tira.

Alguém saberia informar porque isso acontece?

Obrigado.

Labels (1)
1 Solution

Accepted Solutions
fernando_tonial
Partner - Specialist
Partner - Specialist

Olá, você pode tentar assim:

Crie uma tabela temporária com o nome dos campos e a correta formatação:

Exemplo:

TMP_Formatacao:

LOAD Text(A2_COD) As A2_COD INLINE [

    A2_COD

    003433

];

Dados:

LOAD * INLINE [

    A2_COD, A2_VALOR

    003433, 10

    3433, 20

    004158, 30

    009900, 40

];

DROP Table TMP_Formatacao;

Não esqueça de eliminar a tabela temporária ao final do script.

Don´t worry,

Be Qlik.

Tonial.

Don't Worry, be Qlik.

View solution in original post

7 Replies
nicolett_yuri

Porque o qlikview tenta interpretar o valor. No protheus essa coluna é texto, porém o Qlikview identifica que é numérica e remove o zero a esquerda.

Você deve forçar a leitura com a função Text() ou então concatenar um valor qualquer, por exemplo espaço ou algum caractere.

Anonymous
Not applicable
Author

O que me chama a atenção é o fato de ele efetuar este processo somente para alguns registros e não em todos.

Como estou utilizando * e não o nome das colunas, esta solução impactaria nos meus scripts.

exite uma outra forma para o qlik não tentar converter?

nicolett_yuri

Desconheço

fernando_tonial
Partner - Specialist
Partner - Specialist

Olá, você pode tentar assim:

Crie uma tabela temporária com o nome dos campos e a correta formatação:

Exemplo:

TMP_Formatacao:

LOAD Text(A2_COD) As A2_COD INLINE [

    A2_COD

    003433

];

Dados:

LOAD * INLINE [

    A2_COD, A2_VALOR

    003433, 10

    3433, 20

    004158, 30

    009900, 40

];

DROP Table TMP_Formatacao;

Não esqueça de eliminar a tabela temporária ao final do script.

Don´t worry,

Be Qlik.

Tonial.

Don't Worry, be Qlik.
Anonymous
Not applicable
Author

Bom dia fernando.tonial

Esta solução funcionou perfeitamente. Me ajudou muito.

yuri.nicolett foi bem parecido com sua solução mas essa jogadinha me possibilitou não editar meus scripts.

Obrigado galera.

nicolett_yuri

Interessante, essa eu não sabia!

nicolett_yuri

Ficou melhor mesmo, depois vou fazer alguns testes