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

Script para gerar consulta Sql

Olá Pessoal, tenho uma questão que não consigo resolver e queria ajuda por favor.

Tenho um script bem grande em Sql Server, que extrai dados para montagem de um relatório, porém, preciso montar algo automático, ou seja, faço uma conexão sql no qlik, e ele com esse script extrai os dados, ai eu uso alguns campo para montar no dashboard.

Alguma dica?

Maciel

38 Replies
rogerioqv
Creator II
Creator II

Maciel, tentei rodar aqui sua procedure e realmente pelo QV ele não retorna nada. Porém, fiz uma alteração nela, antes de criar a tabela #tabela, coloquei a seguinte instrução:

IF EXISTS (SELECT * FROM tempdb.dbo.SysObjects  where name = '#TABELA') BEGIN                                                                                                                              

  DROP TABLE #TABELA END

e também comentei a última linha da sua procedure, onde executas um DROP na mesma tabela. Desta forma, ela fica ativa até que a procedure seja executada novamente.

Assim, eu fiz um select no QV para buscar os dados desta tabela e consegui ler. Isto demonstra que dependendo do tipo de procedure a ser executada, a conexão com o DB pelo QV pode não funcionar, pois, várias mensagens são retornadas com a execução da procedure, haja visto que vc tens vários insert's sendo executados.

Não deixa de ser um "gato", mas foi apenas para ter certeza de que o problema não está na tabela temporária, mas sim na procedure, que por algum motivo no qv aborta a importação. Dá-me a entender que o QV está esperando o retorno do primeiro comando, que creio que é um insert.

Vou continuar pesquisando, caso encontre alguma coisa te aviso.

Abraços.

Clever_Anjos
Employee
Employee

Maciel,

Acho que pode estar relacionado às tabelas temporárias.

Tente utilizar "variáveis-tabelas"  (Table Variables In T-SQL)  e veja se surte algum efeito

Not applicable
Author

Rogerio, você poderia colocar o codigo da storeprocedure,e  como colocou no qlik.

Não consegui, não erro, mas não deu muito certo também.

Obrigado.

rogerioqv
Creator II
Creator II

Olá Maciel,

Uma das coisas que fiz no seu código foi transformar a tabela temporária local em global, apenas utilizando ## antes do nome. Achei que poderia ser isto no princípio o problema dos dados não retornarem no QV. Como vi que não era, tentei a opção que havia lhe comentado.

Anexo o código da alteração da procedure e abaixo o select feito no próprio qv.

Pode ser que apresente erro na primeira vez que for rodada, depende muito se sua #TABELA já existe ou não, mas por aqui funcionou bem.

SQL

//EXECUTE dbo.sp_vendasEstatisticasRetorno '2015-10-05','2015-10-06';

SELECT * FROM ##TABELA;

Abraços.

Not applicable
Author

Rogerio, realmente funcionou.

Porém, não sei se você observou. OS dados que os sql mostra é diferente do que o Qlik mostra.

O Qlik não pega as colunas do ultimo select, do qual seria as colunas que mostram as informações no formulario, mas sim só as colunas que são criadas na tabela ##TABELA.

Você reparou?

Abraço

rogerioqv
Creator II
Creator II

Maciel,

Realmente ele busca apenas os registros da tabela temporária... quais seriam os registros corretos? Neste caso, estes registros deveriam estar em um tabela temporária tb para o qv buscá-los.

Not applicable
Author

Veja na Procedure o ultimo select que ele faz.

Aqueles campos é o que deveriam aparecer, exatamente como se tivesse rodando a procedure direto entendeu.

Abraço

Clever_Anjos
Employee
Employee

Olá, já conseguiu resolver? Se sim, por favor marque uma das respostas como "Correta" para fechar o tópico e ajudar a manter a comunidade organizada.

  https://community.qlik.com/groups/qlikview-brasil/blog/2016/05/10/como-obter-ajuda

ReckziegelCesarC
Contributor
Contributor

Obrigado. Me ajudou muito!