Fórum Transção em Delphi6 com Access2000 #183008
19/09/2003
0
1- Como devo fazer uma transação no seguinte caso:
Ao fechar uma venda tenho que executar as seguintes rotinas:
a- Gravar os arquivos de cabeçalho e itens de venda.
b-Chamar uma função que atualiza o saldo em estoque dos produtos vendidos.
c-Chamar uma função que atualiza o arquivo de contas a receber.
d-Atualizar o arquivo de movimentação de estoques.
Caso algumas destas operações não tenha sucesso, gostaria de cancelar as demais.
2-Como faço para que quando um DBGrid esteja em estado de edição ou inserção de registros, o usuário não posso movimentar o cursor para cima ou para baixo, não possa sair da linha atual?
Obs.: Utilizo Delphi6,Access2000 e ADO.
Grato.
Ao fechar uma venda tenho que executar as seguintes rotinas:
a- Gravar os arquivos de cabeçalho e itens de venda.
b-Chamar uma função que atualiza o saldo em estoque dos produtos vendidos.
c-Chamar uma função que atualiza o arquivo de contas a receber.
d-Atualizar o arquivo de movimentação de estoques.
Caso algumas destas operações não tenha sucesso, gostaria de cancelar as demais.
2-Como faço para que quando um DBGrid esteja em estado de edição ou inserção de registros, o usuário não posso movimentar o cursor para cima ou para baixo, não possa sair da linha atual?
Obs.: Utilizo Delphi6,Access2000 e ADO.
Grato.
Cfreitas
Curtir tópico
+ 0
Responder
Posts
19/09/2003
Biriga
Cara fiz uma conversao de dados tava dando muito pau depois usei uma propriedade do proprio componete [BeginTrans] com [Try]pra resolver meu problema. tambem no except pode especificar o erro de banco de dados [edatabaseerro] veja
[u:0a02ea5045]Try[/u:0a02ea5045]
[b:0a02ea5045]dmPrincipal.dbFajPrincipal.BeginTrans[/b:0a02ea5045];
sua programacao....
[b:0a02ea5045]dmPrincipal.dbFajPrincipal.CommitTrans;[/b:0a02ea5045]
[u:0a02ea5045]except [/u:0a02ea5045]
showmessage(´erro na turma´+P_TurmaCodigo.AsString);
[b:0a02ea5045]dmPrincipal.dbFajPrincipal.RollbackTrans;[/b:0a02ea5045]
[u:0a02ea5045]end;[/u:0a02ea5045]
////////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Para travar o grid no evento beforepost da Query ferifico uma variavel bolean de nome salvaRecord ele e private salva record so e setada como true quando o usuario clica no botao salvar.
veja
procedure TfrmCadAluno.tblAlunoBeforePost(DataSet: TDataSet);
begin
inherited;
if not salvarecord then abort;
end;
[u:0a02ea5045]Try[/u:0a02ea5045]
[b:0a02ea5045]dmPrincipal.dbFajPrincipal.BeginTrans[/b:0a02ea5045];
sua programacao....
[b:0a02ea5045]dmPrincipal.dbFajPrincipal.CommitTrans;[/b:0a02ea5045]
[u:0a02ea5045]except [/u:0a02ea5045]
showmessage(´erro na turma´+P_TurmaCodigo.AsString);
[b:0a02ea5045]dmPrincipal.dbFajPrincipal.RollbackTrans;[/b:0a02ea5045]
[u:0a02ea5045]end;[/u:0a02ea5045]
////////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Para travar o grid no evento beforepost da Query ferifico uma variavel bolean de nome salvaRecord ele e private salva record so e setada como true quando o usuario clica no botao salvar.
veja
procedure TfrmCadAluno.tblAlunoBeforePost(DataSet: TDataSet);
begin
inherited;
if not salvarecord then abort;
end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)