Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
marcelvinicius
Creator III
Creator III

Execute SQL

Boa tarde pessoal,

Tenho a seguinte duvida: estou fazendo acesso ao banco de dados de um cliente, porém não sei a estrutura de tabelas do ERP usado.

O fornecedor do ERP criou umas procedures para consumirmos somente os dados que queremos.

Exemplo:

EXECUTE itensEstoque

SELECT * FROM ##itensEstoque.

Gostaria de saber se tem alguma forma de criar uma carga que passe esse comando e o mesmo retornar os dados para um QVD.

Como fazer para acessar somente os dados do retorno da procedure?

No QVD, consigo adicionar dados novos e não excluir os antigos?

Grato pelo auxilio quem souber.

Atenciosamente.

1 Solution

Accepted Solutions
felipedl
Partner - Specialist III
Partner - Specialist III

Bom dia Marcel,

É possível realizando um load precedente

Algo nesses moldes:

Tabela:

Load

     *;

SQL EXECUTE itensEstoque;

Para a inclusão dos novos itens, você teria que carregar o QVD antigo e realizar alguma forma de verificação para identificar quais são os valores antigos e quais os novos que estão sendo carregados pela procedure (por data ou id por exemplo).

// Supondo que há um ID

NoConcatenate

QVD:

Load

     *

From QVD;

Load

// Segundo load para carregar os dados

Load

     *

Resident Tabela

where not exists(ID) // verificaria se há IDs que já foram carregados anteriormente na tabela 'Tabela').

Felipe.

View solution in original post

6 Replies
felipedl
Partner - Specialist III
Partner - Specialist III

Bom dia Marcel,

É possível realizando um load precedente

Algo nesses moldes:

Tabela:

Load

     *;

SQL EXECUTE itensEstoque;

Para a inclusão dos novos itens, você teria que carregar o QVD antigo e realizar alguma forma de verificação para identificar quais são os valores antigos e quais os novos que estão sendo carregados pela procedure (por data ou id por exemplo).

// Supondo que há um ID

NoConcatenate

QVD:

Load

     *

From QVD;

Load

// Segundo load para carregar os dados

Load

     *

Resident Tabela

where not exists(ID) // verificaria se há IDs que já foram carregados anteriormente na tabela 'Tabela').

Felipe.

marcelvinicius
Creator III
Creator III
Author

Muito obrigado pela ajuda Felipe.

Outra pergunta, dessa forma eu também posso criar um novo QVD?

Passo um caminho de pasta local, para armazenar esse QVD? Como posso fazer?

Grato mais uma vez pelo auxilio.

felipedl
Partner - Specialist III
Partner - Specialist III

Oi Marcel,

Você pode criar um novo QVD ou sobrescrever o antigo que você tinha.

Tabela:

Load

     *;

SQL EXECUTE itensEstoque;

// Supondo que há um ID

NoConcatenate

QVD:

Load

     *

From QVD;

// Segundo load para carregar os dados

Concatenate (QVD)

Load

     *

Resident Tabela

where not exists(ID) // verificaria se há IDs que já foram carregados anteriormente na tabela 'Tabela').

Store QVD into [QVD.qvd] (qvd); //local onde estaria o arquivo.

Seria algo mais ou menos nessa linha Pedro.

Poderia marcar a resposta como correta / ou se te ajudou por favor?

Felipe.

marcelvinicius
Creator III
Creator III
Author

Bom dia Felipe,

Muito obrigado pela ajuda, estou começando a caminhar melhor.

Tenho a seguinte duvida: não tenho nenhum QVD montado ainda.

Preciso consultar uma procedure em outro servidor por conexão e montei a seguinte sintaxe:

LIB CONNECT TO '192.168.0.251'

Load

     *;

SQL EXECUTE dbo.wGetItem;

Store itens into [lib:/Itens/itens.qvd];

Ao carregar os dados, da a seguinte msg:

Carga de arquivos iniciada

Os dados não foram carregados. Solucione o erro e tente carregar novamente.

Mas não apresenta erro algum, onde será que estou errando? Preciso montar um QVD com os campos que retornam do execute ou ele gera automaticamente?

felipedl
Partner - Specialist III
Partner - Specialist III

Oi Marcel,

As mensagens que ele mostra realmente são meio inconsistentes com o erro que deveria dar.

Tenta rodar várias vezes pra ver se muda a mensagem (não sei porque, mas as vezes não mostra uma mensagem explicativa, algumas sim).

Eu estou chutando, mas teria que entender se por exemplo, a conexão está ok, podendo ser também a procedure que é usada está certa.

marcelvinicius
Creator III
Creator III
Author

Boa tarde Felipe,

Obrigado pela ajuda, consegui fazer a leitura direto criando uma tabela.

Porém agora estou querendo passar para um QVD e esta me dando erro:

ErrorSource: Microsoft OLE DB Provider for SQL Server,

ErrorMsg: Incorrect syntax near 'Store'.

Store Itens into [lib://itens (stoant_danilo)/itens.qvd] (qvd)

Preciso criar na mão um arquivo "itens.qvd"? Pois esse arquivo não existe (estou tentando criar do zero).

O que posso estar fazendo de errado?