Valdir,

Tive uma situação parecida com a sua e resolvi criando um procedure. 
Veja o código abaixo:

SET TERM ^ ;

CREATE OR ALTER PROCEDURE GEN_EMPRESA (
    cod integer = 1)
as
declare variable qtd integer = 0;
begin
  select count(RDB$GENERATOR_NAME) from RDB$GENERATORS where 
RDB$GENERATOR_NAME='GEN_EMPRESA_'||:COD into :qtd;
  if (qtd<1) then
  begin
      INSERT INTO RDB$GENERATORS (RDB$GENERATOR_NAME)
      VALUES ('GEN_EMPRESA_'||:COD);
  end
end^

SET TERM ; ^

No programa vc chama assim (no meu caso):

       With DM.qryGeral do
       begin
          Close;
          SQL.Text := 'EXECUTE PROCEDURE 
GEN_EMPRESA('+IntToStr(G_CODEMPRESA)+')';
          ExecSQL;
          Close;
       end;


Sucesso !!

Moacir


valdirdill escreveu:
> Olá,
>
> Há muito venho adiando isso, mas agora preciso "colocar a mão na massa".
> Estou trabalhando no projeto para transformar um sistema - que já está em 
> utilização - para que possa ser controlar duas ou mais empresas no mesmo bd.
> O que defini até agora é que vou manter os cadastros de produtos, clientes e 
> fornecedores públicos (acessível a todas as filiais). Nas demais tabelas 
> criarei o ID_Filial e, nos registros existentes até o momento dessa 
> implantação receberão valor 1 nesse campo. A partir da implantação da nova 
> sistemática, esse campo receberá valor conforme a filial que estiver ativa, o 
> que é definido no login ao sistema.
> Muito bem, até aqui me parece que a coisa, apesar de ser trabalhosa, não é lá 
> muito complexa.
> Porém, encontrei uma dificuldade: em tenho alguns generators no banco que são 
> utilizados para gerar um código único para determinadas tabelas que não 
> possuem um campo específico para isso. Por exemplo, na tabela de lançamentos 
> do livro caixa utilizo um generator para que a cada novo lançamento o campo 
> código - que é o campo chave - dessa tabela receba o valor do 
> generator_Caixa, já incrementado em 1.
> A dúvida: no caso da segunda, terceira, ..., filiais, como isso poderia ser 
> feito? Não posso utilizar o mesmo generator. Então, cada vez que o usuário 
> cadastrar uma nova filial devo criar um generator com o nome ou código dela? 
> Tipo generator_Caixa_Filial_2?
>
> Consegui me fazer entender?
> Alguém pode me auxiliar com alguma dica?
>
> Obrigado.
>
>
>
> ------------------------------------
>
>   

Responder a