Dúvidas Cliente/Servidor

28/09/2004

Olá, estou começando a desenvolver utilizando o DBExpress e Interbase, e tenho algumas dúvidas.

Devo abolir os DBEdits e usar os Edits no caso de cadastro?
Como controlo as transações? Por exemplo: Se eu tiver 3 terminais, posso cadastrar clientes simultaneamente ou tenho que esperar um terminal liberar a tabela para gravar o outro?

Desde já agradeço
Marcelo


Marcelo_mileris

Respostas

28/09/2004

Wart

Olá, vou tentar ajudar...
Devo abolir os DBEdits e usar os Edits no caso de cadastro?

Não, você pode usar os DBEdit sem problema
Como controlo as transações?

O controle das trransações com o DBExpress é feito da seguinte forma:
você deve declarar uma variavel global na unit onde est´´a o seu SQLConnection.
Ex.:
var
Form1:TForm1;
Trans: TTransactionDesc;
(...)
Depois, c você quiser controlar as transações por si próprio (se não quiser, a cada applyupdates a midas se encarrega disso), quando por exemplo está lidando com estruturas mestre/detalhe você deve fazer o seguinte:
(adicione a unit onde vc declarou a TRRansactionDesc à uses do form atual)
Trans.TransactionID := 1; //aqui você coloca um id (inteiro qualquer que não pode se repetir em transações simultâneas)
Trans.IsolationLevel := xilREADCOMMITTED //dê uma pesquisada para maiores informações
SQLConnection1.StartTransaction(Trans);
(Faz o que tem q fazer)
SQLConnection1.Commit(Trans);

Se eu tiver 3 terminais, posso cadastrar clientes simultaneamente ou tenho que esperar um terminal liberar a tabela para gravar o outro?

Pode cadastrtar simultaneamente sem problema...

Espero ter ajudado...


Responder Citar

28/09/2004

Weber

Quanto a transação eu concordo perfeitamente com o wart.
Porém quanto a parte dos DBEdit eu não gosto de trabalhar com eles em sistemas de grande porte onde tenho várias maquinas conectadas.
Veja bem, quando se trabalha com DBEdit a transação fica aberta por muito tempo o que pode fazer com que seu banco de dados corrompa (pra falar a verdade nunca vi isso acontecer, mas já vi materias que falavam sobre evitar transação aberta)
Quanto ao insert ao mesmo tempo em várias maquinas você tem que tomar algum cuidados.
- Trabalhar com Generators para eviar duplicação de chave primaria no campo código.
- Se você não quer trabalhar com Generators e prefere fazer um Select Max para saber o último registro tome muito cuidado, lembre de buscar o código na hora de salvar e não na hora de abrir a tela.


Responder Citar

28/09/2004

Wart

aproveitando para esclarecer uma coisa:
usando os DBEdit e CDS acontece esse problema da transação ficar aberta? Ela não é aberta somente quando se dá o applyupdates no CDS e logo depois fechada?


Responder Citar