Fórum DBExpress ClientDataSet... Qual a melhor abordagem? #367649
09/01/2009
0
Bem, eu gostaria de saber de vcs, quais as melhores técnicas para armazenar um mestre/detalhe. No caso que mostro abaixo nao utilizo sp no banco para cadastrar, devido a tabela clientes ter mais de 100 campos, isto tornaria o trabalho bem lento, claro que no caso de escrita de código, consumiria somente da tabela clientes mais de 100 linhas de código com parametros desta.
Tb gostaria de saber se esta lógica está com o seu uso correto e se puderem explicitar outras técnicas mais apropriadas...
como ex usuário do paradox, acredito que velhos vícios ficaram, leva-se tempo para acostumar ao modo diferente de fazer as coisas no firebird...
Quando exportei o antigo banco, tive que reformular o banco de dados para o conceito do firebird ao passo que fui aprendendo, mas ainda estou cainhando nesta estrada de client/server... apenas os primeiros passos...
BANCO: firebird + driver uib 1.5, servidor 2.1
desde já agradeço...
bye
Tb gostaria de saber se esta lógica está com o seu uso correto e se puderem explicitar outras técnicas mais apropriadas...
como ex usuário do paradox, acredito que velhos vícios ficaram, leva-se tempo para acostumar ao modo diferente de fazer as coisas no firebird...
Quando exportei o antigo banco, tive que reformular o banco de dados para o conceito do firebird ao passo que fui aprendendo, mas ainda estou cainhando nesta estrada de client/server... apenas os primeiros passos...
BANCO: firebird + driver uib 1.5, servidor 2.1
With DMCS do begin if cdsClientes.State in [dsInsert, dsEdit] then begin cdsClientes.FieldByName(´DATA_ALT´).AsDateTime := Date; try cdsClientes.Post; StartTransactionID; // Gravação de clientes if cdsClientes.ApplyUpdates(0) = 0 then begin // Gravação dos Protestos if not cdsProtestos.IsEmpty then begin if not cdsProtestos.Active then cdsProtestos.Open; cdsProtestos.DisableControls; cdsProtestos.First; try while not cdsProtestos.Eof do begin cdsProtestos.Edit; cdsProtestosID_CLI.Value := cdsClientesID_CLI.Value; cdsProtestos.Post; cdsProtestos.Next; end; finally cdsProtestos.EnableControls; end; // FIM PROTESTOS end; // Grava as referências comerciais if not cdsRefCom.IsEmpty then begin if not cdsRefCom.Active then cdsRefCom.Open; cdsRefCom.DisableControls; cdsRefCom.First; try while not cdsRefCom.Eof do begin cdsRefCom.Edit; cdsRefComID_CLI.Value := cdsClientesID_CLI.Value; cdsRefCom.Post; cdsRefCom.Next; end; finally cdsRefCom.EnableControls; end; //FIM DE REFERÊNCIAS COMERICIAIS end; // Grava referências Bancárias if not cdsRefBank.IsEmpty then begin if not cdsRefBank.Active then cdsRefBank.Open; cdsRefBank.DisableControls; cdsRefBank.First; try while not cdsRefBank.Eof do begin cdsRefBank.Edit; cdsRefBankID_CLI.Value := cdsClientesID_CLI.Value; cdsRefBank.Post; cdsRefBank.Next; end; finally cdsRefBank.EnableControls; end; // FIM REF. BANCÁRIAS end; // Grava Bens Patrimoniais if not cdsBensPatrimoniais.IsEmpty then begin if not cdsBensPatrimoniais.Active then cdsBensPatrimoniais.Open; cdsBensPatrimoniais.DisableControls; cdsBensPatrimoniais.First; try while not cdsBensPatrimoniais.Eof do begin cdsBensPatrimoniais.Edit; cdsBensPatrimoniaisID_CLI.Value := cdsClientesID_CLI.Value; cdsBensPatrimoniais.Post; cdsBensPatrimoniais.Next; end; finally cdsBensPatrimoniais.EnableControls; end; // FIM BENS PATRIMÔNIO end; // Grava todos os detalhes das tabelas // filhas if cdsProtestos.ApplyUpdates(0) = 0 then if cdsRefCom.ApplyUpdates(0) = 0 then if cdsRefBank.ApplyUpdates(0) = 0 then if cdsBensPatrimoniais.ApplyUpdates(0) = 0 then begin if Conexao.InTransaction then Conexao.Commit(Transaction); end else begin Conexao.Rollback(Transaction); Application.MessageBox(PChar(´Não foi possível conluir a transação, devido a um problema ocorrido.´), ´AVISO DOS SISTEMA - Inclusão/Iserção´, MB_ICONERROR+MB_Ok); end; // Aqui desfaz a transação se ocorrer alguma coisa errada com // a tabela clientes end else Conexao.Rollback(Transaction); except on E: Exception do begin Application.MessageBox(PChar(´Não foi possível conluir a transação.´ +#1310+´Mensagem Original: ´+E.Message), ´AVISO DOS SISTEMA - Inclusão/Iserção´, MB_ICONERROR+MB_Ok); Conexao.Rollback(Transaction); end; end; //FIM EDIT/INSERT/CLIENTES end;
desde já agradeço...
bye
Johnny-walker
Curtir tópico
+ 0
Responder
Posts
17/01/2009
Johnny-walker
Ninguém???
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)