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: 
Not applicable

Select unico em todas as tabelas que iniciam com ABC

É possível fazer um select em uma banco firebird onde para cada mês tenho uma tabela com o movimento sendo que as tabelas sempre iniciam com ABC+o mes e ano, por exemplo: ABC122012, ABC012013.

Exemplo: select * from ABC*;??

5 Replies
aderlanrm
Partner - Specialist
Partner - Specialist

Olá,

Sim, é possível, use o comando FOR para percorrer os meses e anos que precisar, ou FOR EACH, na ajuda (F1) tem exemplo.

Se não conseguir, anexe um qvw de exemplo que ajudamos.

Abraço.

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
Not applicable
Author

Aderlan,

Com o FOR e FOR EACH eu não consegui, segue abaixo o script:

SELECT *

FROM TDL030701 A JOIN TLA030701 B ON A.FILIALCOD=B.FILIALCOD AND A.LANCAMNRO=B.LANCAMNRO AND A.DETLANLANCAMDAT=B.LANCAMDAT;

aderlanrm
Partner - Specialist
Partner - Specialist

Olá!

Funciona sim...

Não tem como eu colocar o código de exemplo agora, se não tiver presa, depois eu posto, mas se anexar um QVW já ajuda, economiza meu tempo em começar do zero para te ajudar.

Se suas tabelas estão com todas as datas certinhas, você pode usar duas variáveis para fazer a diferança de datas e o FOR vai fazer a consulta em todas as datas possíveis, se tiver tabelas faltando, vai gerar erros, se não for problema, você pode definir erro_mode para 0 (ou 1, não lembro agora) para ignorar os erros e importar todas as tabelas que encontrar dados.

Abraço.

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
aderlanrm
Partner - Specialist
Partner - Specialist

Olá fpedrassani,

Então... Conseguiu?

Com o FOR, seria algo assim:

FOR x = Num('01/01/2012') to Num('31/12/2012')

    LET vData = Date(x,'ddMMyy');

    Dados:

    SQL    SELECT * FROM TDL$(vData);

   

    Inner Join (Dados)

    SQL SELECT * FROM TLA$(vData);

NEXT;

Testa ai, qualquer coisa, avise... Abraço!

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
Not applicable
Author

Bom Dia,

Uma maneira de conseguir realizar a extração dos dados das tabelas mencionadas (ABC*) é utilizando uma conexão ODBC para a extração das informações.

Quando utiliza esta conexão, ao inserir o comando SQLTABLES, automaticamente o sistema carrega algumas informações da base de dados (verificar Help do Qlikview):

TABLE_QUALIFIER

TABLE_OWNER

TABLE_NAME

TABLE_TYPE

REMARKS

DATA_SOURCE

Neste caso o que é preciso utilizar é a tabela TABLE_NAME (e caso seja necessário a de OWNER também).

A idéia desta extração é criar uma tabela auxiliar com os nomes das tabelas desejadas (neste caso ABC*) e criar um laço de repetição para ir lendo todas elas agregando em uma unica tabela.

Seria algo parecido com este exemplo:

...

ODBC CONNECT32 TO SUA_BASE_FIREBIRD (XUserId is ReFTYWVMHLYWI, XPassword is ObNCTWVMHLYaWSdMBTCA);

ODBC:

SQLTABLES;

//DISCONNECT;  // Finaliza a conexão ODBC

NOCONCATENATE

AUXILIAR:

          LOAD *

          RESIDENT ODBC

          WHERE TABLE_NAME LIKE 'ABC*';  // Tabelas que começam com "ABC"

 

DROP TABLE ODBC;

 

LET vQtdRegistro = NoOfRows('AUXILIAR'); // Verifica a quantidade de registros de tabelas que começam com "ABC"

FOR i=0 TO (vQtdRegistro - 1) // Executa um loop de acordo com a quantidade de tabelas encontradas

 

          LET vTabela = PEEK('TABLE_NAME', i, 'AUXILIAR'); // O nome da tabela é inserida dentro de uma variável ex: ABC122012

 

          TEMP:

     LOAD *;

     SQL

          SELECT *

          FROM $(vTabela);  // Se for necessário, insira o owner antes do valor da variável ex: SEU_OWNER.$(vTabela) - não é necessário inserir aspas ou utilizar o "&" para concatenar os campos.

NEXT