Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
É 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*;??
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,
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;
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.
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!
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