Try...Except...Raise StartTransation | Commit | RollBack
Gostaria de um bom exemplo de como usar estes comando
Try...Except...Raise + StartTransation | Commit | RollBack
Estou usando o FireBird e quero aplicar uma segurança boa na verificação da rede.
Obrigado
Try...Except...Raise + StartTransation | Commit | RollBack
Estou usando o FireBird e quero aplicar uma segurança boa na verificação da rede.
Obrigado
Jonnymarques
Curtidas 0
Respostas
Marcelo Saviski
05/12/2003
try faz alguma coisa que possa gerar erro; except raise Exception.Create(´Erro´); end
GOSTEI 0
Tnaires
05/12/2003
Olá
Minha sugestão (supondo q o nome do seu banco de dados seja BD, e q vc esteja usando BDE):
Se vc tiver usando componentes ADO, os nomes dos métodos para o TADOConnection são semelhantes.
Sucesso...
Minha sugestão (supondo q o nome do seu banco de dados seja BD, e q vc esteja usando BDE):
BD.StartTransaction; // Iniciar transação try // Grava as alterações except on E: Exception do begin ShowMessage(´Erro: ´ + E.Message); // Mostrar o erro DB.RollBack; end; end; BD.Commit; ShowMessage(´Sucesso...´); // Informar ao usuário que tudo correu bem
Se vc tiver usando componentes ADO, os nomes dos métodos para o TADOConnection são semelhantes.
Sucesso...
GOSTEI 0
Tnaires
05/12/2003
Ops...
Caro jonny, o código que eu mandei está errado por um detalhezinho...
Depois do Rollback (dentro do bloco except), coloque um Exit pro programa sair da procedure, senão dá problema.
Ou então vc transefere o Commit pra dentro do bloco try.
Abraços
Caro jonny, o código que eu mandei está errado por um detalhezinho...
Depois do Rollback (dentro do bloco except), coloque um Exit pro programa sair da procedure, senão dá problema.
Ou então vc transefere o Commit pra dentro do bloco try.
Abraços
GOSTEI 0
Technos
05/12/2003
Amigo Tnaires...
Tb to com o mesmo problma do nosso amigo acima, só que eu to trabalhando com componentes IBO.
Pelo o que vi, o Starttransaction é executado exatamente na hora de gravar os dados na tabela nao é ?
Certo, o meu problema é um pouco diferente por que nao posso nem penssar em gravar os dados diretamente na tabela, pois é um prograva tipo PDV que antes de gravar os dados, vou ter que validar a senha do usuario, ou seja, essa validação vai ficar dentro do TRY que voce exemplificou acima, se nao validar a senha, darei um RollBack correto ?
Terei algum problema em utilizar o esboço criado por voce em um sistema assim ? trabalhando com 2 tabelas (mestre-detalhe)?
Poderia me exemplificar com esse esquema ?
Grato
Technos :P
Tb to com o mesmo problma do nosso amigo acima, só que eu to trabalhando com componentes IBO.
Pelo o que vi, o Starttransaction é executado exatamente na hora de gravar os dados na tabela nao é ?
Certo, o meu problema é um pouco diferente por que nao posso nem penssar em gravar os dados diretamente na tabela, pois é um prograva tipo PDV que antes de gravar os dados, vou ter que validar a senha do usuario, ou seja, essa validação vai ficar dentro do TRY que voce exemplificou acima, se nao validar a senha, darei um RollBack correto ?
Terei algum problema em utilizar o esboço criado por voce em um sistema assim ? trabalhando com 2 tabelas (mestre-detalhe)?
Poderia me exemplificar com esse esquema ?
Grato
Technos :P
GOSTEI 0
Tnaires
05/12/2003
Olá
Acredito q vc pode tranquilamente usar o código em questão da maneira q vc está pensando:
É o seguinte: suponha que vc valide seu usuário através da procedure UsuarioInvalido, que retorna false se o usuário for inválido. Então, a linha ´raise Exception.Create();´ cria uma exceção, que conduzirá o fluxo do programa para dentro do bloco except (onde ocorrerá cancelamento da transação corrente).
Espero ter respondido sua pergunta; qq coisa me acrescente ao MSN.
Acredito q vc pode tranquilamente usar o código em questão da maneira q vc está pensando:
BD.StartTransaction; // Iniciar transação try // Grava as alterações if UsuarioInvalido then raise Exception.Create(´Usuário Inválido.´); BD.Commit; ShowMessage(´Alterações efetuadas com sucesso.´); except on E: Exception do begin DB.RollBack; ShowMessage(´Erro: ´ + E.Message); // Mostrar o erro end; end;
É o seguinte: suponha que vc valide seu usuário através da procedure UsuarioInvalido, que retorna false se o usuário for inválido. Então, a linha ´raise Exception.Create();´ cria uma exceção, que conduzirá o fluxo do programa para dentro do bloco except (onde ocorrerá cancelamento da transação corrente).
Espero ter respondido sua pergunta; qq coisa me acrescente ao MSN.
GOSTEI 0