[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