HOUVE UM ERRO NA CONEXÃO COM O BANCO DE DADOS
Se está indo pra parte de [Ô]Update[Ô] é porque você tem registro no seu banco de dados para alterar (ou então, seu código não está passando pelo evento LostFocus do textbox).
Seja como for, seu Update não era pra dar erro. Apenas seria uma Query que não afetaria nenhuma linha do seu banco de dados. Acredito que seja erro na hora de montar o UPDATE SET.
Olha isso:
.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 & [Ô];[Ô]
Esse Update Set tá todo estranho. Em todos os campos você tá fazendo isso:
[Ô]Endereco = [ô][txt-color=#e80000],[/txt-color][Ô] & txtEndereco.Text & [Ô][ô],[Ô]
Pra que essa vÃrgula em vermelho? Em todos os campos você tá fazendo isso...
Agora se o problema está aqui (object variable or with block...)
Set rsSelecao = .Execute
Se está dando erro nessa linha, significa que nem chegar na parte do Insert/Update chegou ainda. Está apenas consultando o código do cliente nessa parte. Você pode verificar o estado da conexão.
Sobre o tratamento de erro: Eu particularmente gosto de fazer o código funcionar primeiro, para só depois colocar os tratamentos de erro. Fica mais fácil debugar o projeto.
Se você colocar um breakpoint nessa linha:
If .EOF And .BOF Then
Vai disparar?
Seja como for, seu Update não era pra dar erro. Apenas seria uma Query que não afetaria nenhuma linha do seu banco de dados. Acredito que seja erro na hora de montar o UPDATE SET.
Olha isso:
.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 & [Ô];[Ô]
Esse Update Set tá todo estranho. Em todos os campos você tá fazendo isso:
[Ô]Endereco = [ô][txt-color=#e80000],[/txt-color][Ô] & txtEndereco.Text & [Ô][ô],[Ô]
Pra que essa vÃrgula em vermelho? Em todos os campos você tá fazendo isso...
Agora se o problema está aqui (object variable or with block...)
Set rsSelecao = .Execute
Se está dando erro nessa linha, significa que nem chegar na parte do Insert/Update chegou ainda. Está apenas consultando o código do cliente nessa parte. Você pode verificar o estado da conexão.
Sobre o tratamento de erro: Eu particularmente gosto de fazer o código funcionar primeiro, para só depois colocar os tratamentos de erro. Fica mais fácil debugar o projeto.
Se você colocar um breakpoint nessa linha:
If .EOF And .BOF Then
Vai disparar?
Colocando o breakpoint na linha mencionada ele dispara e vInclusao se torna true mas mesmo assim esta indo para o comando update, antes do breakpoint estava dando false na vInclusão, como resolver ?
Referente ao tratamento de erros, não estou conseguindo tirar ou melhor deixar como comentários nessas linhas, e esta escrito na apostila do vb.
Referente ao tratamento de erros, não estou conseguindo tirar ou melhor deixar como comentários nessas linhas, e esta escrito na apostila do vb.
Então você tá dizendo que tá entrando dentro dessa condição, correto?
If .EOF And .BOF Then [ô]verifica o inicio e final do registro-
[ô]Se o recordset esta vazio, não retornou registro com esse código:
LimparDados
[ô]Identifica a operação como inclusão:
vInclusao = True
Quando na verdade, não deveria... porque não existe registro com tal código.
é isso mesmo?
Faça um teste então:
Antes da linha:
If .EOF And .BOF Then
Coloque o seguinte código:
Msgbox .RecordCount
Se essa propriedade vir maior do que 0, significa necessariamente que você já tem um registro com esse código.
Já olhou no banco de dados pra ver se realmente não existe um registro correspondente ao código?
If .EOF And .BOF Then [ô]verifica o inicio e final do registro-
[ô]Se o recordset esta vazio, não retornou registro com esse código:
LimparDados
[ô]Identifica a operação como inclusão:
vInclusao = True
Quando na verdade, não deveria... porque não existe registro com tal código.
é isso mesmo?
Faça um teste então:
Antes da linha:
If .EOF And .BOF Then
Coloque o seguinte código:
Msgbox .RecordCount
Se essa propriedade vir maior do que 0, significa necessariamente que você já tem um registro com esse código.
Já olhou no banco de dados pra ver se realmente não existe um registro correspondente ao código?
O banco de dados está vazio e mesmo colocando o comando informado ocorre o mesmo erro e não retorna nada.
Help.
Vamos lá.
Disponibiliza seu projeto para o pessoal verificar.Se o banco estiver vazio ou cheio e como ele é aberto pode causar erro no valor do RecordCount.
Outra.
If [txt-color=#e80000]txtCidade.Text = Empty [/txt-color]Then [ô] Isto causa falha e não erro.Basta pressionar a tecla de espaço uma ou duas vezes.[Ô][Ô] e Empty foi para o espaço.
MsgBox [Ô]A cidade não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
A forma para mim mais correta é Trim(txtCidadade.Text)
Disponibiliza seu projeto para o pessoal verificar.Se o banco estiver vazio ou cheio e como ele é aberto pode causar erro no valor do RecordCount.
Outra.
If [txt-color=#e80000]txtCidade.Text = Empty [/txt-color]Then [ô] Isto causa falha e não erro.Basta pressionar a tecla de espaço uma ou duas vezes.[Ô][Ô] e Empty foi para o espaço.
MsgBox [Ô]A cidade não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
A forma para mim mais correta é Trim(txtCidadade.Text)
Ok, segue o banco.
Help.
Quando postou seu projeto logo baixei.
Abertura do banco de dados.
[Ô]Driver={Microsoft Access Driver (*.mdb)};Dbq=D:\Projeto\Visual Basic\Bibliotecario\Biblio.mdb;[Ô]
Para mim nem pensar.
db.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\Biblio.mdb[Ô].
Mais simples e fácil.
ADODB.Command deixe um pouco de lado, depois mexa.
Não pode cadastrar um Usuário simplesmente pela Chave primária sendo ela numeração automática.
Vários joão,josé,pedro com o mesmo nome.
Para registrar um novo usuário,btnnovo.
Abertura do banco de dados.
[Ô]Driver={Microsoft Access Driver (*.mdb)};Dbq=D:\Projeto\Visual Basic\Bibliotecario\Biblio.mdb;[Ô]
Para mim nem pensar.
db.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\Biblio.mdb[Ô].
Mais simples e fácil.
ADODB.Command deixe um pouco de lado, depois mexa.
Não pode cadastrar um Usuário simplesmente pela Chave primária sendo ela numeração automática.
Vários joão,josé,pedro com o mesmo nome.
Para registrar um novo usuário,btnnovo.
Eu deixei dessa forma por que na apostila esta assim.
O que pode ser feito neste caso ?
O que pode ser feito neste caso ?
Tópico encerrado , respostas não são mais permitidas