HOUVE UM ERRO NA CONEXÃO COM O BANCO DE DADOS
Teste deste jeito.
Dim cnnComando As New ADODB.Command
Dim rsSelecao As New ADODB.Recordset
rsSelecao.CursorType = adOpenStatic
[ô]On Error GoTo errSelecao
[ô]Verifica se foi digitado um código válido:
If Val(txtCodUsuario.Text) = 0 Then
MsgBox [Ô]Não foi digitado um código válido, verifique.[Ô], vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro[Ô]
Exit Sub
End If
Screen.MousePointer = vbHourglass
With cnnComando
[ô]conectando com o banco de dados:
cnnbiblio.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\Biblio.mdb[Ô]
cnnbiblio.Open [ô]<-abrindo o banco de dados
.ActiveConnection = cnnbiblio
.CommandType = adCmdText
[ô]Monta o comando Select para selecionar o registro na tabela:
.CommandText = [Ô]Select * from Usuarios where CodUsuario=[Ô] & txtCodUsuario.Text
.Parameters(0).Value = txtCodUsuario.Text
[ô].Execute
Set rsSelecao = .Execute
MsgBox rsSelecao.RecordCount [ô] Isto vai retornar um valor negativo,devido forma de abertura da tabela.
End With
Dim cnnComando As New ADODB.Command
Dim rsSelecao As New ADODB.Recordset
rsSelecao.CursorType = adOpenStatic
[ô]On Error GoTo errSelecao
[ô]Verifica se foi digitado um código válido:
If Val(txtCodUsuario.Text) = 0 Then
MsgBox [Ô]Não foi digitado um código válido, verifique.[Ô], vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro[Ô]
Exit Sub
End If
Screen.MousePointer = vbHourglass
With cnnComando
[ô]conectando com o banco de dados:
cnnbiblio.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\Biblio.mdb[Ô]
cnnbiblio.Open [ô]<-abrindo o banco de dados
.ActiveConnection = cnnbiblio
.CommandType = adCmdText
[ô]Monta o comando Select para selecionar o registro na tabela:
.CommandText = [Ô]Select * from Usuarios where CodUsuario=[Ô] & txtCodUsuario.Text
.Parameters(0).Value = txtCodUsuario.Text
[ô].Execute
Set rsSelecao = .Execute
MsgBox rsSelecao.RecordCount [ô] Isto vai retornar um valor negativo,devido forma de abertura da tabela.
End With
Após alterar algumas coisas apareceu a mensagem gravação ok, mas em seguinte aparece que houve erro, object required e no banco de dados consta a inclusão.
Segue o código:
Private Sub txtCodUsuario_LostFocus()
[ô]variável que será usada para manipular o Banco de Dados
Dim cnnComando As New ADODB.Command
[ô]variável que recebe os dados do Banco de Dados e Grava no BD de volta
Dim rsSelecao As New ADODB.Recordset
On Error GoTo errSelecao [ô]caso ocorra erro vai pra outro comando abaixo
[ô]Verifica se foi digitado um código válido:
[ô]Val vai retornar em valores numericos o que foi digitado na txtCodUsuario
[ô]como não foi digitado nada ele retorna 0, então acontece a MsgBox abaixo
If Val(txtCodUsuario.Text) = 0 Then
MsgBox [Ô]Não foi digitado um código válido, verifique.[Ô], vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro[Ô]
Exit Sub
End If
[ô]o comando abaixo transforma o cursor do mouse em ampulheta
Screen.MousePointer = vbHourglass
[ô]o command começa a executar operações no BD
With cnnComando
[ô]ativa a conexão criada com o BD
.ActiveConnection = cnnbiblio
[ô]indica o tipo de dados a ser aberto
.CommandType = adCmdText
[ô]Monta o comando Select para selecionar o registro na tabela:
[ô]indica qual o campo a ser trabalhado
.CommandText = [Ô]Select * from Usuarios where CodUsuario=[Ô] & txtCodUsuario.Text & [Ô];[Ô]
[ô]declarando que o rsSeleção será executado como declarado acima
Set rsSelecao = .Execute
End With
With rsSelecao
If .EOF And .BOF Then
[ô]Se o recordset esta vazio, não retornou registro com esse código:
LimparDados
[ô]Identifica a operação como inclusão:
vInclusao = True
Else
[ô]Senão, atribui aos campos os dados do registro:
txtNomeUsuario.Text = !NomeUsuario
txtEndereco.Text = !Endereco
txtCidade.Text = !Cidade
txtEstado.Text = !Estado
txtCEP.Text = !CEP
txtTelefone = Empty & !Telefone
[ô]Identifica a operação como Alteração:
vInclusao = True
[ô]Habilita o botão Excluir:
Toolbar1.Buttons(3).Enabled = True
End If
End With
[ô]Desabilita a digitação do campo código:
txtCodUsuario.Enabled = False
Saida:
[ô]Elimina o command e o recordset da mémoria:
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[Ô]
[ô]ver o erro ao digitar o código do usuário
.Number = 0
GoTo Saida
End If
End With
End Sub
Gravar Dados
Private Sub GravarDados()
Dim cnnComando As New ADODB.Command
Dim vConfMsg As Integer
Dim vError As Boolean
On Error GoTo errGravacao
[ô]Inicializa as variáveis auxiliares:
vConfMsg = vbExclamation + vbOKOnly + vbSystemModal
vErro = False
[ô]Verifica os dados digitados:
If txtNomeUsuario.Text = Empty Then
MsgBox [Ô]O nome não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtEndereco.Text = Empty Then
MsgBox [Ô]O endereco não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtCidade.Text = Empty Then
MsgBox [Ô]A cidade não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtEstado.Text = Empty Then
MsgBox [Ô]O estado não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtCEP.Text = Empty Then
MsgBox [Ô]O cep 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 = cnnbiblio
.CommandType = adCmdText
[ô]Verifica a operação e cria o comando SQL correspondente:
If vInclusao Then
[ô]Inclusão:
.CommandText = [Ô]insert into Usuarios[Ô] & [Ô](CodUsuario,NomeUsuario,Endereco,Cidade,[Ô] & [Ô]Estado,CEP,Telefone)values ( [Ô] & txtCodUsuario.Text & [Ô],[ô][Ô] & txtNomeUsuario.Text & [Ô][ô],[ô][Ô] & txtEndereco.Text & [Ô][ô],[ô][Ô] & txtCidade.Text & [Ô][ô],[ô][Ô] & txtEstado.Text & [Ô][ô],[ô][Ô] & txtCEP.Text & [Ô][ô],[ô][Ô] & txtTelefone.Text & [Ô][ô]);[Ô]
Else
[ô]Alteração:
.CommandText = [Ô]update Usuarios set [Ô] & [Ô]NomeUsuario = [ô][Ô] & txtNomeUsuario.Text & [Ô][ô],[Ô] & [Ô]Endereco = [ô],[Ô] & txtEndereco.Text & [Ô][ô],[Ô] & [Ô]Cidade = [ô],[Ô] & txtCidade.Text & [Ô][ô],[Ô] & [Ô]Estado = [ô],[Ô] & txtEstado.Text & [Ô][ô],[Ô] & [Ô]CEP = [ô],[Ô] & txtCEP.Text & [Ô][ô],[Ô] & [Ô]Telefone = [ô],[Ô] & txtTelefone.Text & [Ô][ô] [Ô] & [Ô]where CodUsuario = [Ô] & txtCodUsuario.Text & [Ô];[Ô]
End If
.Execute
End With
MsgBox [Ô]Gravaçao 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.[Ô] & .Description, vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro[Ô]
[ô]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
Segue o código:
Private Sub txtCodUsuario_LostFocus()
[ô]variável que será usada para manipular o Banco de Dados
Dim cnnComando As New ADODB.Command
[ô]variável que recebe os dados do Banco de Dados e Grava no BD de volta
Dim rsSelecao As New ADODB.Recordset
On Error GoTo errSelecao [ô]caso ocorra erro vai pra outro comando abaixo
[ô]Verifica se foi digitado um código válido:
[ô]Val vai retornar em valores numericos o que foi digitado na txtCodUsuario
[ô]como não foi digitado nada ele retorna 0, então acontece a MsgBox abaixo
If Val(txtCodUsuario.Text) = 0 Then
MsgBox [Ô]Não foi digitado um código válido, verifique.[Ô], vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro[Ô]
Exit Sub
End If
[ô]o comando abaixo transforma o cursor do mouse em ampulheta
Screen.MousePointer = vbHourglass
[ô]o command começa a executar operações no BD
With cnnComando
[ô]ativa a conexão criada com o BD
.ActiveConnection = cnnbiblio
[ô]indica o tipo de dados a ser aberto
.CommandType = adCmdText
[ô]Monta o comando Select para selecionar o registro na tabela:
[ô]indica qual o campo a ser trabalhado
.CommandText = [Ô]Select * from Usuarios where CodUsuario=[Ô] & txtCodUsuario.Text & [Ô];[Ô]
[ô]declarando que o rsSeleção será executado como declarado acima
Set rsSelecao = .Execute
End With
With rsSelecao
If .EOF And .BOF Then
[ô]Se o recordset esta vazio, não retornou registro com esse código:
LimparDados
[ô]Identifica a operação como inclusão:
vInclusao = True
Else
[ô]Senão, atribui aos campos os dados do registro:
txtNomeUsuario.Text = !NomeUsuario
txtEndereco.Text = !Endereco
txtCidade.Text = !Cidade
txtEstado.Text = !Estado
txtCEP.Text = !CEP
txtTelefone = Empty & !Telefone
[ô]Identifica a operação como Alteração:
vInclusao = True
[ô]Habilita o botão Excluir:
Toolbar1.Buttons(3).Enabled = True
End If
End With
[ô]Desabilita a digitação do campo código:
txtCodUsuario.Enabled = False
Saida:
[ô]Elimina o command e o recordset da mémoria:
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[Ô]
[ô]ver o erro ao digitar o código do usuário
.Number = 0
GoTo Saida
End If
End With
End Sub
Gravar Dados
Private Sub GravarDados()
Dim cnnComando As New ADODB.Command
Dim vConfMsg As Integer
Dim vError As Boolean
On Error GoTo errGravacao
[ô]Inicializa as variáveis auxiliares:
vConfMsg = vbExclamation + vbOKOnly + vbSystemModal
vErro = False
[ô]Verifica os dados digitados:
If txtNomeUsuario.Text = Empty Then
MsgBox [Ô]O nome não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtEndereco.Text = Empty Then
MsgBox [Ô]O endereco não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtCidade.Text = Empty Then
MsgBox [Ô]A cidade não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtEstado.Text = Empty Then
MsgBox [Ô]O estado não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtCEP.Text = Empty Then
MsgBox [Ô]O cep 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 = cnnbiblio
.CommandType = adCmdText
[ô]Verifica a operação e cria o comando SQL correspondente:
If vInclusao Then
[ô]Inclusão:
.CommandText = [Ô]insert into Usuarios[Ô] & [Ô](CodUsuario,NomeUsuario,Endereco,Cidade,[Ô] & [Ô]Estado,CEP,Telefone)values ( [Ô] & txtCodUsuario.Text & [Ô],[ô][Ô] & txtNomeUsuario.Text & [Ô][ô],[ô][Ô] & txtEndereco.Text & [Ô][ô],[ô][Ô] & txtCidade.Text & [Ô][ô],[ô][Ô] & txtEstado.Text & [Ô][ô],[ô][Ô] & txtCEP.Text & [Ô][ô],[ô][Ô] & txtTelefone.Text & [Ô][ô]);[Ô]
Else
[ô]Alteração:
.CommandText = [Ô]update Usuarios set [Ô] & [Ô]NomeUsuario = [ô][Ô] & txtNomeUsuario.Text & [Ô][ô],[Ô] & [Ô]Endereco = [ô],[Ô] & txtEndereco.Text & [Ô][ô],[Ô] & [Ô]Cidade = [ô],[Ô] & txtCidade.Text & [Ô][ô],[Ô] & [Ô]Estado = [ô],[Ô] & txtEstado.Text & [Ô][ô],[Ô] & [Ô]CEP = [ô],[Ô] & txtCEP.Text & [Ô][ô],[Ô] & [Ô]Telefone = [ô],[Ô] & txtTelefone.Text & [Ô][ô] [Ô] & [Ô]where CodUsuario = [Ô] & txtCodUsuario.Text & [Ô];[Ô]
End If
.Execute
End With
MsgBox [Ô]Gravaçao 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.[Ô] & .Description, vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro[Ô]
[ô]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
Foi feito pelo txtnomeusuario.
Verifica.
Private Sub txtNomeUsuario_LostFocus()
[ô]variável que será usada para manipular o Banco de Dados
Dim cnnComando As New ADODB.Command
[ô]variável que recebe os dados do Banco de Dados e Grava no BD de volta
Dim rsSelecao As New ADODB.Recordset
On Error GoTo errSelecao [ô]caso ocorra erro vai pra outro comando abaixo
[ô]Verifica se foi digitado um código válido:
[ô]Val vai retornar em valores numericos o que foi digitado na txtCodUsuario
[ô]como não foi digitado nada ele retorna 0, então acontece a MsgBox abaixo
[ô] If Val(txtCodUsuario.Text) = 0 Then
[ô] MsgBox [Ô]Não foi digitado um código válido, verifique.[Ô], vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro[Ô]
[ô] Exit Sub
[ô] End If
[ô]o comando abaixo transforma o cursor do mouse em ampulheta
Screen.MousePointer = vbHourglass
cnnbiblio.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\Biblio.mdb[Ô]
cnnbiblio.Open [ô]<-abrindo o banco
[ô]o command começa a executar operações no BD
With cnnComando
[ô]ativa a conexão criada com o BD
.ActiveConnection = cnnbiblio
[ô]indica o tipo de dados a ser aberto
.CommandType = adCmdText
[ô]Monta o comando Select para selecionar o registro na tabela:
[ô]indica qual o campo a ser trabalhado
.CommandText = [Ô]Select * from Usuarios where Nomeusuario like [ô][Ô] & txtCodUsuario.Text & [Ô]%[ô];[Ô]
[ô]declarando que o rsSeleção será executado como declarado acima
Set rsSelecao = .Execute
End With
With rsSelecao
If .EOF And .BOF Then
[ô]Se o recordset esta vazio, não retornou registro com esse código:
[ô] LimparDados
[ô]Identifica a operação como inclusão:
vInclusao = True
Else
[ô]Senão, atribui aos campos os dados do registro:
txtNomeUsuario.Text = !NomeUsuario
txtEndereco.Text = !Endereco
txtCidade.Text = !Cidade
txtEstado.Text = !Estado
txtCEP.Text = !CEP
txtTelefone = Empty & !Telefone
[ô]Identifica a operação como Alteração:
vInclusao = True
[ô]Habilita o botão Excluir:
[ô]Toolbar1.Buttons(3).Enabled = True
End If
End With
[ô]Desabilita a digitação do campo código:
[ô]txtCodUsuario.Enabled = False
Saida:
[ô]Elimina o command e o recordset da mémoria:
Set rsSelecao = Nothing
Set cnnComando = Nothing
cnnbiblio.Close
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[Ô]
[ô]ver o erro ao digitar o código do usuário
.Number = 0
GoTo Saida
End If
End With
End Sub
Private Sub GravarDados()
Dim cnnComando As New ADODB.Command
Dim vConfMsg As Integer
Dim vError As Boolean
On Error GoTo errGravacao
[ô]Inicializa as variáveis auxiliares:
vConfMsg = vbExclamation + vbOKOnly + vbSystemModal
vErro = False
[ô]Verifica os dados digitados:
If txtNomeUsuario.Text = Empty Then
MsgBox [Ô]O nome não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtEndereco.Text = Empty Then
MsgBox [Ô]O endereco não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtCidade.Text = Empty Then
MsgBox [Ô]A cidade não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtEstado.Text = Empty Then
MsgBox [Ô]O estado não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtCEP.Text = Empty Then
MsgBox [Ô]O cep 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
cnnbiblio.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\Biblio.mdb[Ô]
cnnbiblio.Open
With cnnComando
.ActiveConnection = cnnbiblio
.CommandType = adCmdText
[ô]Verifica a operação e cria o comando SQL correspondente:
If vInclusao = True Then
[ô]Inclusão:
.CommandText = [Ô]insert into Usuarios (NomeUsuario,Endereco,Cidade,Estado,CEP,Telefone)values ( [ô][Ô] & txtNomeUsuario.Text & [Ô][ô],[ô][Ô] & txtEndereco.Text & [Ô][ô],[ô][Ô] & txtCidade.Text & [Ô][ô],[ô][Ô] & txtEstado.Text & [Ô][ô],[ô][Ô] & txtCEP.Text & [Ô][ô],[ô][Ô] & txtTelefone.Text & [Ô][ô]);[Ô]
.Execute
Else
[ô]Alteração:
.CommandText = [Ô]update Usuarios set [Ô] & [Ô]NomeUsuario = [ô][Ô] & txtNomeUsuario.Text & [Ô][ô],[Ô] & [Ô]Endereco = [ô],[Ô] & txtEndereco.Text & [Ô][ô],[Ô] & [Ô]Cidade = [ô],[Ô] & txtCidade.Text & [Ô][ô],[Ô] & [Ô]Estado = [ô],[Ô] & txtEstado.Text & [Ô][ô],[Ô] & [Ô]CEP = [ô],[Ô] & txtCEP.Text & [Ô][ô],[Ô] & [Ô]Telefone = [ô],[Ô] & txtTelefone.Text & [Ô][ô] [Ô] & [Ô]where CodUsuario = [Ô] & txtCodUsuario.Text & [Ô];[Ô]
.Execute
End If
End With
MsgBox [Ô]Gravaçao concluÃda com sucesso.[Ô], vbApplicationModal + vbInformation + vbOKOnly, [Ô]Gravação OK[Ô]
[ô]Chama a sub que limpa os dados do formulário:
cnnbiblio.Close
[ô]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.[Ô] & .Description, vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro[Ô]
[ô]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
Verifica.
Private Sub txtNomeUsuario_LostFocus()
[ô]variável que será usada para manipular o Banco de Dados
Dim cnnComando As New ADODB.Command
[ô]variável que recebe os dados do Banco de Dados e Grava no BD de volta
Dim rsSelecao As New ADODB.Recordset
On Error GoTo errSelecao [ô]caso ocorra erro vai pra outro comando abaixo
[ô]Verifica se foi digitado um código válido:
[ô]Val vai retornar em valores numericos o que foi digitado na txtCodUsuario
[ô]como não foi digitado nada ele retorna 0, então acontece a MsgBox abaixo
[ô] If Val(txtCodUsuario.Text) = 0 Then
[ô] MsgBox [Ô]Não foi digitado um código válido, verifique.[Ô], vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro[Ô]
[ô] Exit Sub
[ô] End If
[ô]o comando abaixo transforma o cursor do mouse em ampulheta
Screen.MousePointer = vbHourglass
cnnbiblio.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\Biblio.mdb[Ô]
cnnbiblio.Open [ô]<-abrindo o banco
[ô]o command começa a executar operações no BD
With cnnComando
[ô]ativa a conexão criada com o BD
.ActiveConnection = cnnbiblio
[ô]indica o tipo de dados a ser aberto
.CommandType = adCmdText
[ô]Monta o comando Select para selecionar o registro na tabela:
[ô]indica qual o campo a ser trabalhado
.CommandText = [Ô]Select * from Usuarios where Nomeusuario like [ô][Ô] & txtCodUsuario.Text & [Ô]%[ô];[Ô]
[ô]declarando que o rsSeleção será executado como declarado acima
Set rsSelecao = .Execute
End With
With rsSelecao
If .EOF And .BOF Then
[ô]Se o recordset esta vazio, não retornou registro com esse código:
[ô] LimparDados
[ô]Identifica a operação como inclusão:
vInclusao = True
Else
[ô]Senão, atribui aos campos os dados do registro:
txtNomeUsuario.Text = !NomeUsuario
txtEndereco.Text = !Endereco
txtCidade.Text = !Cidade
txtEstado.Text = !Estado
txtCEP.Text = !CEP
txtTelefone = Empty & !Telefone
[ô]Identifica a operação como Alteração:
vInclusao = True
[ô]Habilita o botão Excluir:
[ô]Toolbar1.Buttons(3).Enabled = True
End If
End With
[ô]Desabilita a digitação do campo código:
[ô]txtCodUsuario.Enabled = False
Saida:
[ô]Elimina o command e o recordset da mémoria:
Set rsSelecao = Nothing
Set cnnComando = Nothing
cnnbiblio.Close
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[Ô]
[ô]ver o erro ao digitar o código do usuário
.Number = 0
GoTo Saida
End If
End With
End Sub
Private Sub GravarDados()
Dim cnnComando As New ADODB.Command
Dim vConfMsg As Integer
Dim vError As Boolean
On Error GoTo errGravacao
[ô]Inicializa as variáveis auxiliares:
vConfMsg = vbExclamation + vbOKOnly + vbSystemModal
vErro = False
[ô]Verifica os dados digitados:
If txtNomeUsuario.Text = Empty Then
MsgBox [Ô]O nome não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtEndereco.Text = Empty Then
MsgBox [Ô]O endereco não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtCidade.Text = Empty Then
MsgBox [Ô]A cidade não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtEstado.Text = Empty Then
MsgBox [Ô]O estado não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtCEP.Text = Empty Then
MsgBox [Ô]O cep 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
cnnbiblio.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\Biblio.mdb[Ô]
cnnbiblio.Open
With cnnComando
.ActiveConnection = cnnbiblio
.CommandType = adCmdText
[ô]Verifica a operação e cria o comando SQL correspondente:
If vInclusao = True Then
[ô]Inclusão:
.CommandText = [Ô]insert into Usuarios (NomeUsuario,Endereco,Cidade,Estado,CEP,Telefone)values ( [ô][Ô] & txtNomeUsuario.Text & [Ô][ô],[ô][Ô] & txtEndereco.Text & [Ô][ô],[ô][Ô] & txtCidade.Text & [Ô][ô],[ô][Ô] & txtEstado.Text & [Ô][ô],[ô][Ô] & txtCEP.Text & [Ô][ô],[ô][Ô] & txtTelefone.Text & [Ô][ô]);[Ô]
.Execute
Else
[ô]Alteração:
.CommandText = [Ô]update Usuarios set [Ô] & [Ô]NomeUsuario = [ô][Ô] & txtNomeUsuario.Text & [Ô][ô],[Ô] & [Ô]Endereco = [ô],[Ô] & txtEndereco.Text & [Ô][ô],[Ô] & [Ô]Cidade = [ô],[Ô] & txtCidade.Text & [Ô][ô],[Ô] & [Ô]Estado = [ô],[Ô] & txtEstado.Text & [Ô][ô],[Ô] & [Ô]CEP = [ô],[Ô] & txtCEP.Text & [Ô][ô],[Ô] & [Ô]Telefone = [ô],[Ô] & txtTelefone.Text & [Ô][ô] [Ô] & [Ô]where CodUsuario = [Ô] & txtCodUsuario.Text & [Ô];[Ô]
.Execute
End If
End With
MsgBox [Ô]Gravaçao concluÃda com sucesso.[Ô], vbApplicationModal + vbInformation + vbOKOnly, [Ô]Gravação OK[Ô]
[ô]Chama a sub que limpa os dados do formulário:
cnnbiblio.Close
[ô]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.[Ô] & .Description, vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro[Ô]
[ô]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
Tentei rodar aqui com as alterações que me mandou mas agora esta travando neste parte:
Private Sub txtNomeUsuario_LostFocus()
[ô]Converte a primeira letra de cada palavra em maiúscula e as demais em minúsculas:
txtNomeUsuario.Text = StrConv(txtNomeUsuario.Text, vbProperCase)
End Sub
Private Sub txtNomeUsuario_LostFocus()
[ô]Converte a primeira letra de cada palavra em maiúscula e as demais em minúsculas:
txtNomeUsuario.Text = StrConv(txtNomeUsuario.Text, vbProperCase)
End Sub
Olha só... acho que está faltando um pouco de base no desenvolvimento.
Precisa entender o que está fazendo e o que significa cada erro... senão serão tiros no escuro até acertar o alvo.
Tá travando? Significa que está dando erro? Qual erro? Quando dá object required dá em qual linha exatamente?
Trava nessa linha?
txtNomeUsuario.Text = StrConv(txtNomeUsuario.Text, vbProperCase)
Qual erro aparece?
Esse tipo de informação é vital para a resolução do problema...
Precisa entender o que está fazendo e o que significa cada erro... senão serão tiros no escuro até acertar o alvo.
Tá travando? Significa que está dando erro? Qual erro? Quando dá object required dá em qual linha exatamente?
Trava nessa linha?
txtNomeUsuario.Text = StrConv(txtNomeUsuario.Text, vbProperCase)
Qual erro aparece?
Esse tipo de informação é vital para a resolução do problema...
Desculpe em não ter informado o erro certo, o que aparece é
compiler error ambiguos name detectado txtNomeUsuario_LostFocus
compiler error ambiguos name detectado txtNomeUsuario_LostFocus
Isso significa que você está com duas subrotinas assinadas com: txtNomeUsuario_LostFocus
Você tem que apagar uma....
Você tem que apagar uma....
Uma coisa que vi , que você abriu o banco duas vezes, uma na txtNomeUsuario e outra vez quando grava os dados, por que ?
Pelo seu código estava dando erro,
Tive que mudar ate no banco.
Faça deste jeito para teste.
Private Sub txtCodUsuario_LostFocus()
[ô]variável que será usada para manipular o Banco de Dados
Dim cnnComando As New ADODB.Command
[ô]variável que recebe os dados do Banco de Dados e Grava no BD de volta
Dim rsSelecao As New ADODB.Recordset
[ô] On Error GoTo errSelecao [ô]caso ocorra erro vai pra outro comando abaixo
[ô]Verifica se foi digitado um código válido:
[ô]Val vai retornar em valores numericos o que foi digitado na txtCodUsuario
[ô]como não foi digitado nada ele retorna 0, então acontece a MsgBox abaixo
[ô] If Val(txtCodUsuario.Text) = 0 Then
[ô] MsgBox [Ô]Não foi digitado um código válido, verifique.[Ô], vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro[Ô]
[ô] Exit Sub
[ô] End If
[ô]o comando abaixo transforma o cursor do mouse em ampulheta
Screen.MousePointer = vbHourglass
cnnbiblio.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\Biblio.mdb[Ô]
cnnbiblio.Open [ô]<-abrindo o banco
[ô]o command começa a executar operações no BD
With cnnComando
[ô]ativa a conexão criada com o BD
.ActiveConnection = cnnbiblio
[ô]indica o tipo de dados a ser aberto
.CommandType = adCmdText
[ô]Monta o comando Select para selecionar o registro na tabela:
[ô]indica qual o campo a ser trabalhado
.CommandText = [Ô]Select * from Usuarios where Nomeusuario like [ô][Ô] & txtCodUsuario.Text & [Ô]%[ô];[Ô]
[ô]declarando que o rsSeleção será executado como declarado acima
[ô]rsSelecao.CursorType = adOpenStatic
Set rsSelecao = .Execute
End With
With rsSelecao
[ô]MsgBox .RecordCount
If .EOF And .BOF Then
[ô]Se o recordset esta vazio, não retornou registro com esse código:
[ô] LimparDados
[ô]Identifica a operação como inclusão:
vInclusao = True
Else
[ô] codupdate = !CodUsuario
[ô]Senão, atribui aos campos os dados do registro:
codupdate = rsSelecao(0)
MsgBox (codupdate)
txtNomeUsuario.Text = !NomeUsuario
txtEndereco.Text = !Endereco
txtCidade.Text = !Cidade
txtEstado.Text = !Estado
txtCEP.Text = !CEP
txtTelefone = Empty & !Telefone
[ô]Identifica a operação como Alteração:
vInclusao = False
[ô]Habilita o botão Excluir:
[ô]Toolbar1.Buttons(3).Enabled = True
End If
End With
[ô]Desabilita a digitação do campo código:
[ô]txtCodUsuario.Enabled = False
Saida:
[ô]Elimina o command e o recordset da mémoria:
Set rsSelecao = Nothing
Set cnnComando = Nothing
cnnbiblio.Close
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[Ô]
[ô]ver o erro ao digitar o código do usuário
.Number = 0
GoTo Saida
End If
End With
End Sub
Private Sub GravarDados()
Dim cnnComando As New ADODB.Command
Dim vConfMsg As Integer
Dim vError As Boolean
[ô] On Error GoTo errGravacao
[ô]Inicializa as variáveis auxiliares:
vConfMsg = vbExclamation + vbOKOnly + vbSystemModal
vErro = False
[ô]Verifica os dados digitados:
If txtNomeUsuario.Text = Empty Then
MsgBox [Ô]O nome não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtEndereco.Text = Empty Then
MsgBox [Ô]O endereco não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtCidade.Text = Empty Then
MsgBox [Ô]A cidade não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtEstado.Text = Empty Then
MsgBox [Ô]O estado não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtCEP.Text = Empty Then
MsgBox [Ô]O cep 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
cnnbiblio.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\Biblio.mdb[Ô]
cnnbiblio.Open
With cnnComando
.ActiveConnection = cnnbiblio
.CommandType = adCmdText
[ô]Verifica a operação e cria o comando SQL correspondente:
If vInclusao = True Then
[ô]Inclusão:
.CommandText = [Ô]insert into Usuarios (NomeUsuario,Endereco,Cidade,Estado,CEP,Telefone)values ( [ô][Ô] & txtNomeUsuario.Text & [Ô][ô],[ô][Ô] & txtEndereco.Text & [Ô][ô],[ô][Ô] & txtCidade.Text & [Ô][ô],[ô][Ô] & txtEstado.Text & [Ô][ô],[ô][Ô] & txtCEP.Text & [Ô][ô],[ô][Ô] & txtTelefone.Text & [Ô][ô]);[Ô]
.Execute
MsgBox [Ô]Gravaçao concluÃda com sucesso.[Ô], vbApplicationModal + vbInformation + vbOKOnly, [Ô]Gravação OK[Ô]
Else
[ô]Alteração:
.CommandText = [Ô]update Usuarios set NomeUsuario = [ô][Ô] & txtNomeUsuario.Text & [Ô][ô],Endereco = [ô][Ô] & txtEndereco.Text & [Ô][ô],Cidade = [ô][Ô] & txtCidade.Text & [Ô][ô],Estado = [ô][Ô] & txtEstado.Text & [Ô][ô],CEP = [ô][Ô] & txtCEP.Text & [Ô][ô],Telefone = [ô][Ô] & txtTelefone.Text & [Ô][ô] where codusuario =[Ô] & codupdate
.Execute
MsgBox [Ô]Alteração concluÃda com sucesso.[Ô], vbApplicationModal + vbInformation + vbOKOnly, [Ô]Gravação OK[Ô]
End If
End With
[ô] MsgBox [Ô]Gravaçao concluÃda com sucesso.[Ô], vbApplicationModal + vbInformation + vbOKOnly, [Ô]Gravação OK[Ô]
[ô]Chama a sub que limpa os dados do formulário:
cnnbiblio.Close
[ô]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.[Ô] & .Description, vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro[Ô]
[ô]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
Tive que mudar ate no banco.
Faça deste jeito para teste.
Private Sub txtCodUsuario_LostFocus()
[ô]variável que será usada para manipular o Banco de Dados
Dim cnnComando As New ADODB.Command
[ô]variável que recebe os dados do Banco de Dados e Grava no BD de volta
Dim rsSelecao As New ADODB.Recordset
[ô] On Error GoTo errSelecao [ô]caso ocorra erro vai pra outro comando abaixo
[ô]Verifica se foi digitado um código válido:
[ô]Val vai retornar em valores numericos o que foi digitado na txtCodUsuario
[ô]como não foi digitado nada ele retorna 0, então acontece a MsgBox abaixo
[ô] If Val(txtCodUsuario.Text) = 0 Then
[ô] MsgBox [Ô]Não foi digitado um código válido, verifique.[Ô], vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro[Ô]
[ô] Exit Sub
[ô] End If
[ô]o comando abaixo transforma o cursor do mouse em ampulheta
Screen.MousePointer = vbHourglass
cnnbiblio.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\Biblio.mdb[Ô]
cnnbiblio.Open [ô]<-abrindo o banco
[ô]o command começa a executar operações no BD
With cnnComando
[ô]ativa a conexão criada com o BD
.ActiveConnection = cnnbiblio
[ô]indica o tipo de dados a ser aberto
.CommandType = adCmdText
[ô]Monta o comando Select para selecionar o registro na tabela:
[ô]indica qual o campo a ser trabalhado
.CommandText = [Ô]Select * from Usuarios where Nomeusuario like [ô][Ô] & txtCodUsuario.Text & [Ô]%[ô];[Ô]
[ô]declarando que o rsSeleção será executado como declarado acima
[ô]rsSelecao.CursorType = adOpenStatic
Set rsSelecao = .Execute
End With
With rsSelecao
[ô]MsgBox .RecordCount
If .EOF And .BOF Then
[ô]Se o recordset esta vazio, não retornou registro com esse código:
[ô] LimparDados
[ô]Identifica a operação como inclusão:
vInclusao = True
Else
[ô] codupdate = !CodUsuario
[ô]Senão, atribui aos campos os dados do registro:
codupdate = rsSelecao(0)
MsgBox (codupdate)
txtNomeUsuario.Text = !NomeUsuario
txtEndereco.Text = !Endereco
txtCidade.Text = !Cidade
txtEstado.Text = !Estado
txtCEP.Text = !CEP
txtTelefone = Empty & !Telefone
[ô]Identifica a operação como Alteração:
vInclusao = False
[ô]Habilita o botão Excluir:
[ô]Toolbar1.Buttons(3).Enabled = True
End If
End With
[ô]Desabilita a digitação do campo código:
[ô]txtCodUsuario.Enabled = False
Saida:
[ô]Elimina o command e o recordset da mémoria:
Set rsSelecao = Nothing
Set cnnComando = Nothing
cnnbiblio.Close
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[Ô]
[ô]ver o erro ao digitar o código do usuário
.Number = 0
GoTo Saida
End If
End With
End Sub
Private Sub GravarDados()
Dim cnnComando As New ADODB.Command
Dim vConfMsg As Integer
Dim vError As Boolean
[ô] On Error GoTo errGravacao
[ô]Inicializa as variáveis auxiliares:
vConfMsg = vbExclamation + vbOKOnly + vbSystemModal
vErro = False
[ô]Verifica os dados digitados:
If txtNomeUsuario.Text = Empty Then
MsgBox [Ô]O nome não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtEndereco.Text = Empty Then
MsgBox [Ô]O endereco não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtCidade.Text = Empty Then
MsgBox [Ô]A cidade não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtEstado.Text = Empty Then
MsgBox [Ô]O estado não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
If txtCEP.Text = Empty Then
MsgBox [Ô]O cep 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
cnnbiblio.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\Biblio.mdb[Ô]
cnnbiblio.Open
With cnnComando
.ActiveConnection = cnnbiblio
.CommandType = adCmdText
[ô]Verifica a operação e cria o comando SQL correspondente:
If vInclusao = True Then
[ô]Inclusão:
.CommandText = [Ô]insert into Usuarios (NomeUsuario,Endereco,Cidade,Estado,CEP,Telefone)values ( [ô][Ô] & txtNomeUsuario.Text & [Ô][ô],[ô][Ô] & txtEndereco.Text & [Ô][ô],[ô][Ô] & txtCidade.Text & [Ô][ô],[ô][Ô] & txtEstado.Text & [Ô][ô],[ô][Ô] & txtCEP.Text & [Ô][ô],[ô][Ô] & txtTelefone.Text & [Ô][ô]);[Ô]
.Execute
MsgBox [Ô]Gravaçao concluÃda com sucesso.[Ô], vbApplicationModal + vbInformation + vbOKOnly, [Ô]Gravação OK[Ô]
Else
[ô]Alteração:
.CommandText = [Ô]update Usuarios set NomeUsuario = [ô][Ô] & txtNomeUsuario.Text & [Ô][ô],Endereco = [ô][Ô] & txtEndereco.Text & [Ô][ô],Cidade = [ô][Ô] & txtCidade.Text & [Ô][ô],Estado = [ô][Ô] & txtEstado.Text & [Ô][ô],CEP = [ô][Ô] & txtCEP.Text & [Ô][ô],Telefone = [ô][Ô] & txtTelefone.Text & [Ô][ô] where codusuario =[Ô] & codupdate
.Execute
MsgBox [Ô]Alteração concluÃda com sucesso.[Ô], vbApplicationModal + vbInformation + vbOKOnly, [Ô]Gravação OK[Ô]
End If
End With
[ô] MsgBox [Ô]Gravaçao concluÃda com sucesso.[Ô], vbApplicationModal + vbInformation + vbOKOnly, [Ô]Gravação OK[Ô]
[ô]Chama a sub que limpa os dados do formulário:
cnnbiblio.Close
[ô]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.[Ô] & .Description, vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro[Ô]
[ô]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
Com a alteração que me passou agora deu esse erro e não foi feita a inclusão, parou na parte
.execute depois de tentar inserir na tabela.
IndÃce ou chave primária não pode conter um valor null.
.execute depois de tentar inserir na tabela.
IndÃce ou chave primária não pode conter um valor null.
Tópico encerrado , respostas não são mais permitidas