[OFF] ONDE ESTA O ERRO NA ROTINA DE EXCLUSAO
Amigo. vc abriu duas vezes o begintrans, sem finalizar a transação anterior....
ou seja, seria necessário vc finalizar a transação anterior , para iniciar uma nova transação......
ou seja, seria necessário vc finalizar a transação anterior , para iniciar uma nova transação......
Explica melhor ai FOXMAN.
Roberto, se colocar apenas uma transação antes do IF e excluir a linha de novo inÃÂÂcio de transação, como abaixo:
Private Sub ApagaPagamentosCheques()
[txt-backcolor=#ff0000]' Inicio da Transacao SQL
cnCeramica.begintrans [/txt-backcolor]
' Confirmada a Exclusao
' Elimina Frete da Tabela PagamentosFretes se for o caso
If txtValorPgtoFrete.Text <> "" Then
' Elimina Frete
strSQL = ""
strSQL = "DELETE * FROM PagamentosFretes WHERE Vale = " & CLng(Format(txtVale.Text, "#####0"))
' Nomeia Label para Tratamento de Erro
On Error GoTo ErrPgtoChequeEXC
' Limpa Tabela de Errors
cnCeramica.Errors.Clear
' Executa Comando SQL
cnCeramica.Execute (strSQL)
End If
' Elimina Cheque da Tabela PagamentosCheques
strSQL = ""
strSQL = "DELETE * FROM PagamentosCheques WHERE NumeroPagamento = " & txtNumeroPagamento.Text
' Nomeia Label para Tratamento de Erro
On Error GoTo ErrPgtoChequeEXC
' Limpa Tabela de Errors
cnCeramica.Errors.Clear
' Executa Comando SQL
cnCeramica.Execute (strSQL)
' GRAVA CC de Clientes - EXCLUSAO de Pagamentos CHEQUES
Dim StrErr As Boolean
GravaCC txtCodigoCliente.Text, txtCodigoVendedor.Text, dteDataEmissao.Text, _
"EXCLUSAO Pagamento CHEQUE Numero: " & txtNumeroPagamento.Text, _
txtValorDoc, "0", "X", txtNumeroPagamento.Text, StrErr
If StrErr Then
' Erro Na Gravacao do CC do Cliente
MsgBox "EXCLUSAO - Erro na Gravacao do CC do Cliente."
Exit Sub
End If
' Efetiva a Transacao SQL nas Tabelas
cnCeramica.CommitTrans
Exit Sub
ErrPgtoChequeEXC:
' No caso de Erro Desfazer alteracoes nas Tabelas
cnCeramica.RollbackTrans
funGravaErro Err.Number, Err.Description, Err.Source
End Sub
Na função ApagaPagamentosCheques() vc inicia duas veses o begintrans sem finalizar a transação, o correto seria :
Private Sub ApagaPagamentosCheques()
' Confirmada a Exclusao
' Elimina Frete da Tabela PagamentosFretes se for o caso
If txtValorPgtoFrete.Text <> "" Then
' Elimina Frete
strSQL = ""
strSQL = "DELETE * FROM PagamentosFretes WHERE Vale = " & CLng(Format(txtVale.Text, "#####0"))
' Inicio da Transacao SQL
cnCeramica.BeginTrans ' aki vc inicia a transação.......
' Nomeia Label para Tratamento de Erro
On Error GoTo ErrPgtoChequeEXC
' Limpa Tabela de Errors
cnCeramica.Errors.Clear
' Executa Comando SQL
cnCeramica.Execute (strSQL)
End If
' Elimina Cheque da Tabela PagamentosCheques
strSQL = ""
strSQL = "DELETE * FROM PagamentosCheques WHERE NumeroPagamento = " & txtNumeroPagamento.Text
' Inicio da Transacao SQL
cnCeramica.BeginTrans [txt-color=#ff0000]' aki vc inicia novamente a tranzação, matando a intrução anterior, pois deveria ter dado um committrans.......soh haverá alteração daqui para frente....para que a sql anterior tenha efeito, teria q ter dado um committrans e dai sim aberto outro, e mesmo assim com tratamento de erro, caso ocorra erro um rollback seria necessário.....[/txt-color]
' Nomeia Label para Tratamento de Erro
On Error GoTo ErrPgtoChequeEXC
' Limpa Tabela de Errors
cnCeramica.Errors.Clear
' Executa Comando SQL
cnCeramica.Execute (strSQL)
' GRAVA CC de Clientes - EXCLUSAO de Pagamentos CHEQUES
Dim StrErr As Boolean
GravaCC txtCodigoCliente.Text, txtCodigoVendedor.Text, dteDataEmissao.Text, _
"EXCLUSAO Pagamento CHEQUE Numero: " & txtNumeroPagamento.Text, _
txtValorDoc, "0", "X", txtNumeroPagamento.Text, StrErr
If StrErr Then
' Erro Na Gravacao do CC do Cliente
MsgBox "EXCLUSAO - Erro na Gravacao do CC do Cliente."
Exit Sub
End If
' Efetiva a Transacao SQL nas Tabelas
cnCeramica.CommitTrans
Exit Sub
ErrPgtoChequeEXC:
' No caso de Erro Desfazer alteracoes nas Tabelas
cnCeramica.RollbackTrans
funGravaErro Err.Number, Err.Description, Err.Source
End Sub
FOXMAN e JSILVA29 mataram a questão...
Estou pontuando o FOXMAN
Solução do Problema.
O ERRO acontece quando a variavel txtValorPgtoFrete.text eh diferente de zero, ou seja,
teremos 3xBeginTrans e apenas 2xCommitTrans
Quando a variavel txtValorPgtoFrete.txt eh igual a ZERO tudo funciona.
DICA:
Sempre que usar o BeginTrans, tem que ter um CommitTrans pra ele do contrário um "RollBack" será executado e as alterações no BD não serão efetivadas.
Segue o código corrigido funcionando:
Estou pontuando o FOXMAN
Solução do Problema.
O ERRO acontece quando a variavel txtValorPgtoFrete.text eh diferente de zero, ou seja,
teremos 3xBeginTrans e apenas 2xCommitTrans
Quando a variavel txtValorPgtoFrete.txt eh igual a ZERO tudo funciona.
DICA:
Sempre que usar o BeginTrans, tem que ter um CommitTrans pra ele do contrário um "RollBack" será executado e as alterações no BD não serão efetivadas.
Segue o código corrigido funcionando:
Private Sub ApagaPagamentosCheques()
' Confirmada a Exclusao
' Inicio da Transacao SQL
cnCeramica.BeginTrans
' Nomeia Label para Tratamento de Erro
On Error GoTo ErrPgtoChequeEXC
' Elimina Frete da Tabela PagamentosFretes se for o caso
If txtValorPgtoFrete.Text <> "" Then
' Elimina Frete
strSQL = ""
strSQL = "DELETE * FROM PagamentosFretes WHERE Vale = " & CLng(Format(txtVale.Text, "#####0"))
' Limpa Tabela de Errors
cnCeramica.Errors.Clear
' Executa Comando SQL
cnCeramica.Execute (strSQL)
End If
' Elimina Cheque da Tabela PagamentosCheques
strSQL = ""
strSQL = "DELETE * FROM PagamentosCheques WHERE NumeroPagamento = " & txtNumeroPagamento.Text
' Limpa Tabela de Errors
cnCeramica.Errors.Clear
' Executa Comando SQL
cnCeramica.Execute (strSQL)
' GRAVA CC de Clientes - EXCLUSAO de Pagamentos CHEQUES
Dim StrErr As Boolean
GravaCC txtCodigoCliente.Text, txtCodigoVendedor.Text, dteDataEmissao.Text, _
"EXCLUSAO Pagamento CHEQUE Numero: " & txtNumeroPagamento.Text, _
txtValorDoc, "0", "X", txtNumeroPagamento.Text, StrErr
If StrErr Then
' Erro Na Gravacao do CC do Cliente
MsgBox "EXCLUSAO - Erro na Gravacao do CC do Cliente."
Exit Sub
End If
' Efetiva a Transacao SQL nas Tabelas
cnCeramica.CommitTrans
Exit Sub
ErrPgtoChequeEXC:
' No caso de Erro Desfazer alteracoes nas Tabelas
cnCeramica.RollbackTrans
funGravaErro Err.Number, Err.Description, Err.Source
End Sub
OPS!
Não vai dar pra pontuar ninguém.
Tópicos [OFF] não pontuam. Foi mal.
At,
Não vai dar pra pontuar ninguém.
Tópicos [OFF] não pontuam. Foi mal.
At,
Procedimentos para transações.
seubd.begintrans
'instruçoes...........
'entre esse inicio de transação e a conclusão da transação naum poderá haver uma nova trasação.
tratamento de erro.......
select case err.number
case is 0
seubd.committrans
case xxxxxxx
msgbox "xxxxxxx"
seubd.rollbacktrans
end select
seubd.begintrans
'instruçoes...........
'entre esse inicio de transação e a conclusão da transação naum poderá haver uma nova trasação.
tratamento de erro.......
select case err.number
case is 0
seubd.committrans
case xxxxxxx
msgbox "xxxxxxx"
seubd.rollbacktrans
end select
Tópico encerrado , respostas não são mais permitidas