Estou utilizando um formulário para controle de informações onde tenho que inserir uma certa transação de cada vez, porém sempre que abro o formulário consigo inserir a primeira transação no BD e na segunda tentativa o sistema da o seguinte erro: "A operação deve usar uma consulta atualizável"
Esse erro ocorre no comando .execudo do AdoDB.Connection, porém como disse só na segunda vez que aperto o botão de inserir.
Segue abaixo o código fonte do botão:
Esse erro ocorre no comando .execudo do AdoDB.Connection, porém como disse só na segunda vez que aperto o botão de inserir.
Segue abaixo o código fonte do botão:
Private Sub CommandButton1_Click()
On Error GoTo trata_erro
Dim Cartao As Integer
Dim Tipo As Integer
Dim valor As Double
Dim data As String
Dim Csql As String
Dim CodEven As Single
Range("E11").Select
If ActiveCell.Text = "" Then
MsgBox "Informação invalida de valor, por favor corrigir", vbCritical, "ERRO"
Exit Sub
Else
valor = ActiveCell.Text
End If
Range("E13").Select
If ActiveCell.Text = "" Then
MsgBox "Informação invalida de data, por favor corrigir", vbCritical, "ERRO"
Exit Sub
Else
data = ActiveCell.Text
End If
If CBcartao.Text = "" Then
MsgBox "Informação invalida de Cartão, por favor corrigir", vbCritical, "ERRO"
Exit Sub
End If
If CBtipo.Text = "" Then
MsgBox "Informação invalida de Tipo de transação, por favor corrigir", vbCritical, "ERRO"
Exit Sub
End If
Set BDVisa = New ADODB.Connection
With BDVisa
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=C:\Documents and Settings\brzauma\Meus documentos\Pessoal\Financeiro\Visa Vale 2000.mdb;"
.Open
Set RSvisa2 = New ADODB.Recordset
RSvisa2.CursorLocation = adUseClient
RSvisa2.Open "Select codcartao from cartao where cartao = '" & CBcartao.Text & "'", BDVisa, adOpenStatic, adLockReadOnly, adCmdText
Do Until RSvisa2.EOF
Cartao = RSvisa2(0)
RSvisa2.MoveNext
Loop
RSvisa2.Close
Set RSvisa2 = New ADODB.Recordset
RSvisa2.CursorLocation = adUseClient
Csql = "Select código from tipotransacao where tipotransacao = '" & CBtipo.Text & "'"
RSvisa2.Open Csql, BDVisa, adOpenStatic, adLockReadOnly, adCmdText
Do Until RSvisa2.EOF
Tipo = RSvisa2(0)
RSvisa2.MoveNext
Loop
RSvisa2.Close
Set RSvisa2 = New ADODB.Recordset
RSvisa2.CursorLocation = adUseClient
Csql = "Select código from eventos"
RSvisa2.Open Csql, BDVisa, adOpenStatic, adLockReadOnly, adCmdText
Do Until RSvisa2.EOF
CodEven = RSvisa2(0)
RSvisa2.MoveNext
Loop
CodEven = CodEven + 1
RSvisa2.Close
Csql = "Insert into eventos (código, codtipotransacao, codcartao, valor, datatransacao) values (" & CodEven & ", " & Tipo & ", " & Cartao & ", '" & valor & "', '" & data & "')"
MsgBox Csql
.Execute Csql
MsgBox "Dados gravados com Sucesso", vbOKOnly, "Sucesso"
.Close
End With
Set BDVisa = Nothing
Set RSVisa = Nothing
CBtipo.Text = ""
CBcartao.Text = ""
Worksheets("formulário").Range("E11").Value = ""
Worksheets("formulário").Range("E13").Value = ""
ReFresh
Exit Sub
trata_erro:
MsgBox Err.Description & " - " & Err.Number
Exit Sub
End Sub