Banco Firebird Delphi 3 Bancos Alimentando 1

Firebird

08/02/2008

Olá, tenho um problema sério e não estou conseguindo achar uma solução para ele.
Tenho 4 filiais, todas com seu banco de dados, este recebe periodicamente atualizações de dados vindas da matriz, e estas filiais enviam dados de diversas tabelas para a matriz, mas isso só ocorre em 50¬ do tempo, ou seja, dia sim, dia não.
Preciso de uma forma para enviar estes dados sem que estes percam suas ligações com as outras tabelas.
Me sugeriram chave composta, mas não estou conseguindo fazer dar certo, ela dá erro de violação de key.

Alguma sugestão??? :?: Só quero enviar dados de várias pontas para um central e não perder as ligações entre tabelas.


Prover

Prover

Curtidas 0

Respostas

Edilcimar

Edilcimar

08/02/2008

Eu tenho sistema com filiais e utilizo diretórios diferentes para cada filial, assim sendo não há problema algum.
Ex: \Filial1\Banco, \Filial2\Banco, ...\FilialN\Banco


GOSTEI 0
Prover

Prover

08/02/2008

Eu tenho sistema com filiais e utilizo diretórios diferentes para cada filial, assim sendo não há problema algum. Ex: \Filial1\Banco, \Filial2\Banco, ...\FilialN\Banco


Não posso deixar em pastas diferentes, todos os relatórios e dados da mtriz são alimentados pelas filiais, se eu separar em bancos diferentes como vou poder ligar os dados em um mesmo relatório e como vou fazer comparações de dados entre as filiais? No meu caso esta solução não iria resolver. Preciso de todos os dados das filiais no banco da matriz, na verdade só há um banco na filial para o caso de uma queda na reve VPN ou internet que alimenta estas, dae o sistema segue funcionando e só alimenta a matriz quando a rede voltar.

Você tem mais alguma idéia? Qualquer ajuda é bem vinda.

Obrigado..


GOSTEI 0
Edilcimar

Edilcimar

08/02/2008

Eu trabalho assim e busco todos os dados, tais como vendas, faltas, estoque etc através de uma sql, isto tudo ao mesmo tempo.
Se quiser ter apenas um banco, ele poderá ficar muito grande, mas neste caso você criaria um campo ´filial´, e faria as importações através de append e preencheria este campo ´filial´ com o número da loja, por ex:
Matriz = 1, FilialA = 2, FilialN = N


GOSTEI 0
Prover

Prover

08/02/2008

Eu trabalho assim e busco todos os dados, tais como vendas, faltas, estoque etc através de uma sql, isto tudo ao mesmo tempo. Se quiser ter apenas um banco, ele poderá ficar muito grande, mas neste caso você criaria um campo ´filial´, e faria as importações através de append e preencheria este campo ´filial´ com o número da loja, por ex: Matriz = 1, FilialA = 2, FilialN = N


E as chaves, tipo os registros 1,2,3,4 da tabela X ligados ao registro 1,2 da tabela Y na filial 1, dae quando forem para a matriz eles não podem ir com 1,2,3,4 ou o 1,2 pois já vai ter estes registros lá, como farei?

Tanto o 1,2,3,4 como o 1,2 são registros de autoincremento.

Quando forem salvos na tabela da matriz eles terão outras chaves e isso fará a ligação com as demais tabelas serem comprometidas..

O que sugere?


GOSTEI 0
Edilcimar

Edilcimar

08/02/2008

Se ao enviar um dado para a matriz e colocar na filial num campo ´enviado´ um True, no próximo envio este campo não será reenviado, quanto ao campo ´filial´, se nele estiver contido os números 1 a N, através deste número você saberá a qual loja este dado se refere, portanto ao fazer uma consulta poderá utilizar este campo para uma filtragem


GOSTEI 0
Prover

Prover

08/02/2008

Se ao enviar um dado para a matriz e colocar na filial num campo ´enviado´ um True, no próximo envio este campo não será reenviado, quanto ao campo ´filial´, se nele estiver contido os números 1 a N, através deste número você saberá a qual loja este dado se refere, portanto ao fazer uma consulta poderá utilizar este campo para uma filtragem


Acho que me expressei mal, assim:

Problema:
Tenho 4 filiais, e uma matriz da empresa.

A matriz não está 100¬ disponível para acesso então existem 4 bancos de dados um em cada filial.. mais um banco central na matriz..
Eles são idênticos, mas cada filial gerencia seus dados e a matriz tem uma cópia de todos os dados das filiais, ou seja, cada vez que uma filial grava um dado ele é enviado para a matriz também..

Quando a matriz não está disponível, estes dados ficam nas filiais para serem enviados mais tarde.. (Aqui entra a parte do campo TRUE que vc falou, mas o problema é as chaves primárias)

O meu problema é o seguinte, tô usando banco de dados Firebird, e campos de chave primária com autoincremento, ou seja, ele vai crescendo sem o risco de se repetir... até ai tudo bem, o problema é quando envio para a matriz.. pois outras 3 filiais também estão enviando... e as chaves vão mudar.. e tabelas ligadas por chaves vão perder suas reias ligações..

Tem alguma idéia de como resolver isso?


GOSTEI 0
Edilcimar

Edilcimar

08/02/2008

neste caso, volto a minha idéia original, que é a que utilizo, cada loja, independentemente de ser matriz ou não, tem um diretório, e em cada diretório tenho o banco de dados de cada loja, aí faço uma sql para acessar dados de cada loja, onde nada existirá dobrado, e cada coisa será ´pessoal´, inerente a cada loja, portanto cada um poderá saber o estoque do outro, sem entretanto interferir no estoque, só poderá acessar os outros para questão de verificar a existência de produtos, ou no caso da matriz, enviar atualizãção de preços às filiais


GOSTEI 0
POSTAR