CADASTRO COM VB6 E ACCESS 2000
Estou tentando fazer uma simples aplicação de cadastro de clientes, utilizando uma apostila que peguei no "apostilando", mas não funciona.
Cadastrei clientes manualmente no Banco de dados Acess 2000 para teste, mas quando executo a pesquisa pelo CPF com a aplicação abaixo, vêm a mensagem "Run-time error '-2147217913 (80040e07)': tipo de dados incompatÃvel na expressão de critério".
Por favor, me ajudem a descobrir o que aontece!
Ah! Se algém tiver uma apostila com instuções passo a passo sobre como criar uma simples aplicação de cadastro (inclusão, exlusão, Alteração), por favor me indique!!
Grato,
Cláudio Gutemberg
Citação:
Private Sub txtDocumento_LostFocus()
Dim cnnComando As New ADODB.Command
Dim rsSelecao As New ADODB.Recordset
'On Error GoTo errSelecao
'Verifica se foi digitado um código válido:
If Val(txtDocumento.Text) = 0 Then
MsgBox "Não foi digitado um código válido, verifique.", _
vbExclamation + vbOKOnly + vbApplicationModal, "Erro"
txtDocumento.Text = Empty
txtDocumento.SetFocus
Exit Sub
End If
Screen.MousePointer = vbHourglass
With cnnComando
.ActiveConnection = cnnCardeal
.CommandType = adCmdText
'Monta o comando SELECT para selecionar o registro na tabela:
.CommandText = "SELECT * FROM balcafi WHERE bfcpf = " & Val(txtDocumento.Text) & ";"
Set rsSelecao = .Execute
End With
With rsSelecao
If .EOF And .BOF Then
'Se o recordset está vazio, não retornou registro com esse código:
LimparDados
'Identifica a operacao como Inclusão:
vInclusao = True
Else
'Senão, atribui aos campos os dados do registro:
txtDocumento2.Text = !bfrg
txtNome.Text = !bfnome
txtEndereço.Text = !bfend
txtTelefone.Text = Empty & !bftel
txtEmail.Text = !bfemail
txtObs.Text = Empty & !bfobs
'Identifica a operacao como Alteração:
vInclusao = False
'Habilita o botão Excluir:
cmdExcluir.Enabled = True
End If
End With
'Desabilita a digitação do campo código:
txtDocumento.Enabled = False
Saida:
'Elimina o command e o recordset da memória:
Set rsSelecao = Nothing
Set cnnComando = Nothing
Screen.MousePointer = vbDefault
Exit Sub
errSelecao:
With Err
If .Number <> 0 Then
MsgBox "Houve um erro na recuperação do registro solicitado.", _
vbExclamation + vbOKOnly + vbApplicationModal, "Aviso"
.Number = 0
GoTo Saida
End If
End With
End Sub
Private Sub LimparDados()
'Apaga o conteúdo dos campos do formulário:
txtRG.Text = Empty
txtNome.Text = Empty
txtEndereço.Text = Empty
txtTelefone.Text = Empty
txtContato.Text = Empty
txtSite.Text = Empty
txtEmail.Text = Empty
txtObs.Text = Empty
End Sub
Private Sub GravarDados()
Dim cnnComando As New ADODB.Command
Dim vConfMsg As Integer
Dim vErro As Boolean
On Error GoTo errGravacao
'Inicializa as variáveis auxiliares:
vConfMsg = vbExclamation + vbOKOnly + vbSystemModal
vErro = False
'Verifica os dados digitados:
If txtDocumento2.Text = Empty Then
MsgBox "O campo " & vDocumento & " não foi preenchido.", vConfMsg, "Erro"
vErro = True
End If
If txtNome.Text = Empty Then
MsgBox "O campo Nome não foi preenchido.", vConfMsg, "Erro"
vErro = True
End If
If txtEndereço.Text = Empty Then
MsgBox "O campo Endereço não foi preenchido.", vConfMsg, "Erro"
vErro = True
End If
If txtTelefone.Text = Empty Then
MsgBox "O campo Telefone não foi preenchido.", vConfMsg, "Erro"
vErro = True
End If
If txtEmail.Text = Empty Then
MsgBox "O campo E-Mail não foi preenchido.", vConfMsg, "Erro"
vErro = True
End If
'Se aconteceu um erro de digitação, sai da sub sem gravar:
If vErro Then Exit Sub
Screen.MousePointer = vbHourglass
With cnnComando
.ActiveConnection = cnnCardeal
.CommandType = adCmdText
'Verifica a operação e cria o comando SQL correspondente:
If vInclusao Then
'Inclusão:
.CommandText = "INSERT INTO balcafi " & _
"(bfcpf, bfrg, bfnome, bfend, " & _
"bftel, bfemail, bfobs) VALUES ('" & _
txtDocumento.Text & ",'" & _
txtDocumento2.Text & "','" & _
txtNome.Text & "','" & _
txtEndereço.Text & "','" & _
txtTelefone.Text & "','" & _
txtEmail.Text & "','" & _
txtObs.Text & "','"
Else
'Alteração:
.CommandText = "UPDATE Usuarios SET " & _
"bfrg = '" & txtDocumento2.Text & "'," & _
"bfnome = '" & txtNome.Text & "'," & _
"bfend = '," & txtEndereço.Text & "'," & _
"bftel = '," & txtTelefone.Text & "'," & _
"bfemail = '," & txtEmail.Text & "'," & _
"bfobs = '," & txtObs.Text & "'," & _
"WHERE bfcpf = " & txtDocumento.Text & ";"
End If
.Execute
End With
MsgBox "Gravação concluÃda com sucesso.", _
vbApplicationModal + vbInformation + vbOKOnly, _
"Gravação OK"
'Chama a sub que limpa os dados do formulário:
LimparTela
Saida:
Screen.MousePointer = vbDefault
Set cnnComando = Nothing
Exit Sub
errGravacao:
With Err
If .Number <> 0 Then
MsgBox "Houve um erro durante a gravação dos dados na tabela.", _
vbExclamation + vbOKOnly + vbApplicationModal, "Erro"
.Number = 0
GoTo Saida
End If
End With
End Sub
Private Sub LimparTela()
'Chama a sub LimparDados para limpar os campos do formulário:
LimparDados
'Desabilita o botão Excluir:
cmdExcluir.Enabled = False
'Apaga o conteúdo do campo CodUsuario e lhe passa o foco:
txtDocumento.Text = Empty
txtDocumento.SetFocus
End Sub
Private Sub ExcluirRegistro()
Dim cnnComando As New ADODB.Command
Dim vOk As Integer
On Error GoTo errExclusao
'Solicita confirmação da exclusão do registro:
vOk = MsgBox("Confirma a exclusão desse registro?", _
vbApplicationModal + vbDefaultButton2 + vbQuestion + vbYesNo, _
"Exclusão")
If vOk = vbYes Then
Screen.MousePointer = vbHourglass
With cnnComando
.ActiveConnection = cnnCardeal
.CommandType = adCmdText
'Cria o comando SQL:
.CommandText = "DELETE FROM balcafi WHERE bfcpf = " & _
txtDocumento.Text & ";"
.Execute
End With
MsgBox "Registro excluÃdo com sucesso.", _
vbApplicationModal + vbInformation + vbOKOnly, _
"Exclusão OK"
'Chama a sub que apaga todos os campos do formulário:
LimparTela
End If
Saida:
Screen.MousePointer = vbDefault
Set cnnComando = Nothing
Exit Sub
errExclusao:
With Err
If .Number <> 0 Then
MsgBox "Houve um erro durante a exclusão do registro.", _
vbExclamation + vbOKOnly + vbApplicationModal, "Erro"
.Number = 0
GoTo Saida
End If
End With
End Sub
Se for texto a sintax errada esta aqui:
"SELECT * FROM balcafi WHERE bfcpf = " & Val
(txtDocumento.Text) & ";"
O banco só entende que é texo se vc colocar o '
Fica assim:
"SELECT * FROM balcafi WHERE bfcpf = '" & Val
(txtDocumento.Text) & "'"
Espero ter ajudado