Dúvidas Cliente/Servidor
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
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
Curtidas 0
Respostas
Wart
28/09/2004
Olá, vou tentar ajudar...
Não, você pode usar os DBEdit sem problema
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);
Pode cadastrtar simultaneamente sem problema...
Espero ter ajudado...
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...
GOSTEI 0
Weber
28/09/2004
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.
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.
GOSTEI 0
Wart
28/09/2004
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?
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?
GOSTEI 0