[firebase-br] Ajuda com BD e SQL
Claudio.sj@sercon.com.br
claudio.sj em sercon.com.br
Qua Set 24 09:37:19 -03 2008
Aqui na empresa que trabalho, usamos muito bem o Firebird para multiempresas
e fazemos da seguinte maneira
as tabelas comuns como Clientes,Historico ..e outras tem o nome normal
Exemplo: tb_clientes
tb_historico
etc...
as tabelas de cada empresa tem os seguintes nomes
Exemplo: E01_tb_duplicatas, E01_tb_movimento, E01_tb_contas
E02_tb_duplicatas,E02_tb_movimento, E02_tb_contas
e assim por diante, a vantagem disso é que tenho uma tabela pra cada empresa
dentro do mesmo banco e com isso
Nas selects no sistema montamos sempre com a empresa que esta usando
Espero ter contribuido ..
----- Original Message -----
From: "tetraetila®" <tetraetila em netscape.net>
To: <lista em firebase.com.br>
Sent: Tuesday, September 23, 2008 10:36 PM
Subject: [firebase-br] Ajuda com BD e SQL
Olá pessoal!
Estou migrando um sistema para Firebird e me deparei com um problema que
gostaria de debater com vocês.
Tenho um BD que possui as tabelas com os dados de clientes,
fornecedores, transportadores e vendedores, além
das tabelas de tipos de documentos, plano de contas, bancos, etc. Seria
a base principal.
Quando estou na Empresa01 faço um "select" que me retorna o tipo de
documento na tabela A017 e a descrição do
documento que está na tabela A014, o tipo de fornecedor na tabela A017
e o nome do fornecedor na tabela A001
e por aí vai, vendedores, transportadores, plano de contas, etc. A
tabela A017 é de movimentação de contas a pagar, porém no sistema
eu trabalho com as Empresas02, 03, "n"... As tabelas padrões são as
mesmas, eu mudo apenas os arquivos de movimentação
para outro BD. O problema é que eu não sei como fazer isto ou se é
possível fazê-lo no Firebird. Ou seja, dar um "select" que
busque dados em dois BD's distintos. Quando o banco de dados é o mesmo o
"select" abaixo funciona perfeitamente,
porém quando mudo para a Empresa02 não funciona, pois não sei buscar as
informações das tabelas A014 -
A001 - A016 - A011 que estão no BD001. Isto que necessito seria em
Postgres, um "DBLink", já andei pesquisando.
Se alguém tiver uma sugestão que possa me ajudar mesmo que seja fazer o
"DBLink" no Postgress, agradeço desde já.
Pois esta está sendo a "pedra no meu caminho" para terminar o sistema,
resolvendo isto vários problemas serão
solucionados de uma vez só. Estamos saindo do Clipper e DBF.
Muito obrigado!
Vejam o select que funciona quando o BD é único:
select a017.a017_docu, a017.a017_tipo, A014_DESC, a017.a017_dtem,
a017.a017_tpfo, a017.a017_forn, A001_NOME, a017.a017_hist,
a017.a017_dtvn, a017.a017_vavn, a017.a017_dtpg, a017.a017_vapg,
a017.a017_atra, a017.a017_cdbx, a017.a017_banc, A016_DESC,
a017.a017_cheq, a017.a017_his1, a017.a017_digi, a017.a017_plan, A011_DESC,
a017.a017_dupl, a017.a017_docu as ca017_docu, a017.a017_tipo as ca017_tipo
from a001017_tbl a017
left outer join a001014_tbl on (a017.a017_tipo = a001014_tbl.a014_chv)
left outer join a001001_tbl on (a017.a017_tpfo =
a001001_tbl.a001_tipo) and (a017.a017_forn = a001001_tbl.a001_chv)
left outer join a001016_tbl on (a017.a017_banc = a001016_tbl.a016_chv)
left outer join a001011_tbl on (a017.a017_plan = a001011_tbl.a011_redu)
O que retornaria mais ou menos conforme abaixo:
----------------------------------------------------------------------------
-----------------------------------------
A017_DOCU | A017_TIPO | A014_DESC | A017_DTEM | A017_TPFO | A017_FORN |
A001_NOME |
----------------------------------------------------------------------------
-----------------------------------------
52.521-U | 003 | Duplicatas |16/09/2008 |
001 | 000565 | Santa Maria S/A. |
----------------------------------------------------------------------------
------------------------------------------
36.878-A | 005 | Cheques |16/08/2008 |
001 | 000098 | Papelão & Cia. |
----------------------------------------------------------------------------
------------------------------------------
14.315-B | 001 | Pagamentos |16/09/2007 |
001 | 000001 | Pagamentos diversos |
----------------------------------------------------------------------------
------------------------------------------
Adilson Nunes
A Informática nasceu para resolver
problemas que antes não existiam...
<http://tetraetila.coolfreepage.com>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista