[firebase-br] Duvida

Fausto fausto.s.a em uol.com.br
Qui Mar 25 17:55:35 -03 2010


Cantu, eu programo em 3 camadas e tenho triggers, procedures e também as 
regras de integridades, normalmente..
Um exemplo é este código que uso para pegar o valor de um generator do 
lado do servidor.
function TDataLojas.PegarCodigo(Tabela: string): Integer;
var
   ServiceDM: IDMPadrao;
begin
   ServiceDM := StartService;
   Result := ServiceDM.RetornaGenId(Tabela);
end;

Esta função do lado do servidor esta implementada assim:
function TDMPadrao.RetornaGenId(const Tabela: string): Integer;
begin
   SqlAux.Close;
   SqlAux.CommandText := 'SELECT GEN_ID(GEN_' + Tabela +
     ', 1) AS CODIGO FROM RDB$DATABASE';
   SqlAux.Open;
   Result := SqlAux.FieldByName('CODIGO').asInteger;
   SqlAux.close;
end;
Tenho várias sp´s no banco, onde as utilizo para relatórios e outros afins.
Portanto, não tenho o SGDB apenas para armazenamento de dados.
Em tempo, utilizo delphi 7 com firebird 1.5 e 2.1 uso a suite 
RemObjects(www.remobjects.com) em substituição ao DataSnap.



Em 25/03/2010 15:48, Carlos H. Cantu escreveu:
> O conceito de 3 camadas realmente transmite a idéia que o BD seja
> usado somente para repositório de dados, mas eu não concordo 100% com
> isso, ou então vamos voltar para a era dos "DBFs da vida".
>
> Eu suma, apesar de nunca pessoalmente ter desenvolvido nada em 3
> camadas, acredito que mesmo neste modelo, ainda há espaço para ter
> algumas coisas implementadas em triggers, procedures e regras de
> integridade. Entra aí a perspicácia do desenvolvedor de saber o que
> deve ser feito no servidor de aplicação, e o que pode ser mantido no
> BD.
>
> []s
> Carlos H. Cantu
> www.FireBase.com.br - www.firebirdnews.org
> www.warmboot.com.br - blog.firebase.com.br
>
> DB>  Olá, boa tarde!
>
> DB>  Bom, vou explicar um modelo em 3 camadas que implementamos recentemente.
>
> DB>  Basicamente um sistema em 3 camadas tem:
> DB>  - Camada Client : Interface e interação com o usuário
> DB>  - Camada de Negôcio (Server)- É a aplicação que provem toda a regra do
> DB>  sistema, desde um simples calculo de desconto até uma geração completa da
> DB>  NF-e por exemplo.
> DB>  - Banco de dados - Nesse modelo N camadas, a BD serve apenas para gravar
> DB>  informações. Não existe operações no banco como trigger, SP, SF, nada.
>
> DB>  Aqui na empresa temos dois ERP, um para pequenas e médias empresa (Firebird)
> DB>  e outro para grandes empresa (Oracle). O fato de ter 2 sistema é uma
> DB>  politica antiga que foi implementada, mas enfim.
> DB>  Com a necessidade da NF-e, precisamos criar os processos para os 2 ERP's....
> DB>  mas fazer 2 vezes não rola, nossa solução foi:
> DB>  - Criamos uma aplicação servidora que iria se conectar em QUALQUER banco e
> DB>  utilizar algumas tabelas padrões para fazer todo o processo da Nfe. E como é
> DB>  uma aplicação server também iria disponibilizar métodos de consulta,
> DB>  cancelamento de NF, geração de PDF, etc.
> DB>  - Criamos uma app Client para que o usuário pudesse visualizar as Nfes, onde
> DB>  iria se conectar na app server e ter as opções disponibilizadas no server.
>
> DB>  Então, tanto o ERP Firebird quanto o ERP Oracle utilizam a mesma solução
> DB>  para emissão de NF-e, porque quem define para a app Client qual banco está
> DB>  usando é a app Server. Inclusive tem clientes que estão utilizando
> DB>  geo-distribuição (server está em SP, e tem o client rodando em manaus)
>
> DB>  Agora vou listar alguns problemas que tivemos:
> DB>  Como utilizamos os drivers nativos do DBExpress, tivemos muita
> DB>  incompatibilidade de campos ao acessar as base oracle ou firebird. Tipo, se
> DB>  eu adicionasse um campo do tipo NUMERIC(6) do Oracle, a Query retornava um
> DB>  tipo BCD, ao tentar usar a base Firebird com o mesmo tipo de campo
> DB>  NUMBER(6), dava erro de esperando FMTBCD, ou seja, não conseguimos com o
> DB>  driver nativo utilizar master-detail.
> DB>  Fora isso, é show de bola!
>
> DB>  Daniel Buona
> DB>  AFL Sistemas
> DB>  fone/fax : (14) 3405-1199  - Pompéia / SP
> DB>  www.aflsistemas.com.br
> DB>  skype:danielbuona.afl
>
>
> ______________________________________________
> 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
>

-- 
Fausto Alves
Skype:faustoalves
msn:faustoalves em com4.com.br
Franca-SP
Enviado pelo Mozilla Thunderbird
http://br.mozdev.org/thunderbird





Mais detalhes sobre a lista de discussão lista