Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Diogo Alló

Erro no access

Recommended Posts

Pessoal estou precisando de uma grande ajuda. Quando estou mandando inserir um novo dado no banco de dados acess 97 via visual basic ele me dá a seguinte menssagem de erro :

 

Run-Time Error (80004005)';

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)

A operação deve usar uma consulta atualizável.

 

Se alguém puder me ajudar. já agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cláudio este é o código quando eu chamo para gravar ...

 

'-------------------------------------------------------------------------

' BOTÃO DE OK

'-------------------------------------------------------------------------

Private Sub btnOk_Click()

Dim lvSql As String

Dim lvSqlAux As String

Dim lvWhere As String

Dim lvRegistro As ADODB.Recordset

Dim i As Integer

 

'Verificar qual operação foi solicitada

Select Case (frmCadPessoas.Tag)

 

Case INCLUSAO '**************************************

If (btnOk.Tag = INCLUSAO) Then

mvCodigo = -1 ' indicar que o individuo ainda não foi inserido no banco

 

' O codigo é AutoIncrement

lvSql = "INSERT INTO Cadastro (nome," & _

" Endereco, " & _

" Complemento, " & _

" Cep, " & _

" Email," & _

" Telefone," & _

" Celular," & _

" Fax," & _

" Sexo," & _

" Filhos, " & _

" CodigoCidade," & _

" CodigoUF," & _

" CodigoEstadoCivil, " & _

" CodigoBairro," & _

" CodigoOrigemMissao," & _

" DataNascimento, " & _

" DDDTelefone," & _

" DDDCelular," & _

" DDDFax," & _

" CodigoUsuario) " & _

" VALUES ('" & txtNome.Text & "'"

 

 

 

lvSql = lvSql & ", '" & txtEndereco.Text & "'"

lvSql = lvSql & ", '" & txtComplemento.Text & "'"

lvSql = lvSql & ", '" & txtCep.Text & "'"

lvSql = lvSql & ", '" & txtEmail.Text & "'"

lvSql = lvSql & ", '" & txtTelefone.Text & "'"

lvSql = lvSql & ", '" & txtCelular.Text & "'"

lvSql = lvSql & ", '" & txtFax.Text & "'"

 

If (rdSexoFem.Value = True) Then

lvSql = lvSql & ", 'F'"

Else

lvSql = lvSql & ", 'M'"

End If

 

If (ckTemFilhos.Value = 1) Then

lvSql = lvSql & ", true"

Else

lvSql = lvSql & ", false"

End If

 

If ((cbxCidade.ListIndex) = -1) Then

lvSql = lvSql & ", -1 "

Else

lvSql = lvSql & ", " & cbxCidade.ItemData(cbxCidade.ListIndex)

End If

 

If ((cbxUF.ListIndex) = -1) Then

lvSql = lvSql & ", -1"

Else

lvSql = lvSql & ", " & cbxUF.ItemData(cbxUF.ListIndex)

End If

 

If ((cbxEstadoCivil.ListIndex) = -1) Then

lvSql = lvSql & ", -1"

Else

lvSql = lvSql & ", " & cbxEstadoCivil.ItemData(cbxEstadoCivil.ListIndex)

End If

 

If (cbxBairro.ListIndex) = -1 Then

lvSql = lvSql & ", -1"

Else

lvSql = lvSql & ", " & cbxBairro.ItemData(cbxBairro.ListIndex)

End If

 

If ((cbxMissao.ListIndex) = -1) Then

lvSql = lvSql & ", -1"

Else

lvSql = lvSql & ", " & cbxMissao.ItemData(cbxMissao.ListIndex)

End If

 

lvSql = lvSql & ", " & FormataData(dtNascimento.Value)

lvSql = lvSql & ", '" & txtDDDTelefone.Text

lvSql = lvSql & "', '" & txtDDDCelular.Text

lvSql = lvSql & "', '" & txtDDDFax.Text

lvSql = lvSql & "', " & gv_CodigoUsuario & ")"

Else ' É inclusão e apertou ok pela segunda vez

Unload Me

Exit Sub

End If

 

Case ALTERACAO '**************************************

 

lvSql = "UPDATE Cadastro SET " & _

" Nome='" & txtNome.Text & "'"

lvSql = lvSql & ", Endereco='" & txtEndereco.Text & "'"

lvSql = lvSql & ", Complemento='" & txtComplemento.Text & "'"

lvSql = lvSql & ", Cep='" & txtCep.Text & "'"

lvSql = lvSql & ", Email='" & txtEmail.Text & "'"

lvSql = lvSql & ", Telefone='" & txtTelefone.Text & "'"

lvSql = lvSql & ", Celular='" & txtCelular.Text & "'"

lvSql = lvSql & ", Fax='" & txtFax.Text & "'"

lvSql = lvSql & ", DDDTelefone='" & txtDDDTelefone.Text & "'"

lvSql = lvSql & ", DDDCelular='" & txtDDDCelular.Text & "'"

lvSql = lvSql & ", DDDFax='" & txtDDDFax.Text & "'"

 

If (rdSexoFem.Value = True) Then

lvSql = lvSql & ", Sexo='F'"

Else

lvSql = lvSql & ", Sexo='M'"

End If

 

If (ckTemFilhos.Value = 1) Then

lvSql = lvSql & ", Filhos=true"

Else

lvSql = lvSql & ", Filhos=false"

End If

 

If (cbxBairro.ListIndex <> -1) Then

lvSql = lvSql & ", CodigoBairro=" & cbxBairro.ItemData(cbxBairro.ListIndex)

End If

 

If (cbxCidade.ListIndex <> -1) Then

lvSql = lvSql & ", CodigoCidade=" & cbxCidade.ItemData(cbxCidade.ListIndex)

End If

 

If (cbxUF.ListIndex <> -1) Then

lvSql = lvSql & ", CodigoUF=" & cbxUF.ItemData(cbxUF.ListIndex)

End If

 

If (cbxEstadoCivil.ListIndex <> -1) Then

lvSql = lvSql & ", CodigoEstadoCivil=" & cbxEstadoCivil.ItemData(cbxEstadoCivil.ListIndex)

End If

 

If (cbxMissao.ListIndex <> -1) Then

lvSql = lvSql & ", CodigoOrigemMissao=" & cbxMissao.ItemData(cbxMissao.ListIndex)

End If

 

lvSql = lvSql & ", DataNascimento='" & dtNascimento.Value & "'"

lvSql = lvSql & " WHERE codigo=" & mvCodigo

 

 

 

Case EXCLUSAO '**************************************

'Confirmar a exclusão do Cadastro

lvSql = "Confirma a Exclusão do Cadastro de '" & _

txtNome.Text & "' ?"

If (MsgBox(lvSql, vbYesNo + vbApplicationModal + vbExclamation, "Operação Crítica") = vbYes) Then

lvSql = "DELETE FROM Cadastro" & _

" WHERE codigo=" & mvCodigo

Else

lvSql = ""

End If

End Select

 

If (lvSql <> "") Then

If (frmCadPessoas.Tag = EXCLUSAO) Then

lvWhere = " WHERE CodigoCadastro=" & mvCodigo

'Apagar os dados das tabelas relacionadas

'Acao Pastoral Cadastro

lvSqlAux = "DELETE FROM AcaoPastoralCadastro " & lvWhere

gvConexao.Execute (lvSqlAux)

 

'Assinante Revista

lvSqlAux = "DELETE FROM AssinanteRevista " & lvWhere

gvConexao.Execute (lvSqlAux)

 

'Autoridade Cadastro

lvSqlAux = "DELETE FROM AutoridadeCadastro " & lvWhere

gvConexao.Execute (lvSqlAux)

 

'Benfeitor Cadastro

lvSqlAux = "DELETE FROM BenfeitorCadastro " & lvWhere

gvConexao.Execute (lvSqlAux)

 

'Comunidade Cadastro

lvSqlAux = "DELETE FROM ComunidadeCadastro " & lvWhere

gvConexao.Execute (lvSqlAux)

 

'Diocese Cadastro

lvSqlAux = "DELETE FROM DioceseCadastro " & lvWhere

gvConexao.Execute (lvSqlAux)

 

'Grupo Cadastro

lvSqlAux = "DELETE FROM GrupoCadastro " & lvWhere

gvConexao.Execute (lvSqlAux)

 

'ObraCadastro

lvSqlAux = "DELETE FROM ObraCadastro " & lvWhere

gvConexao.Execute (lvSqlAux)

 

'Paroquia Cadastro

lvSqlAux = "DELETE FROM ParoquiaCadastro " & lvWhere

gvConexao.Execute (lvSqlAux)

 

'ReligiosoCadastro

lvSqlAux = "DELETE FROM ReligiosoCadastro " & lvWhere

gvConexao.Execute (lvSqlAux)

 

'Situação Vocação Cadastro

lvSqlAux = "DELETE FROM SituacaoVocacaoCadastro " & lvWhere

gvConexao.Execute (lvSqlAux)

 

End If

 

'Executar o Comando SQL configurado no Select Case acima

gvConexao.Execute (lvSql)

End If

 

 

If frmCadPessoas.Tag = INCLUSAO Then

If Not (btnOk.Tag = INCLUSAO) Then

txtNome.Text = ""

txtEndereco.Text = ""

txtComplemento.Text = ""

txtCep.Text = ""

txtEmail.Text = ""

txtTelefone.Text = ""

txtDDDTelefone.Text = ""

txtCelular = ""

txtDDDCelular = ""

txtFax = ""

txtDDDFax = ""

 

rdSexoFem.Value = True

ckTemFilhos.Value = 0

cbxCidade.ListIndex = -1

cbxUF.ListIndex = -1

cbxEstadoCivil.ListIndex = -1

cbxBairro.ListIndex = -1

cbxMissao.ListIndex = -1

'dtNascimento.Value =

 

txtNome.SetFocus

mvCodigo = -1

 

Else

'Acertar o titulo do botao

btnOk.Caption = "&Ok"

 

'Indicar que os dados gerais já foram incluidos _

portanto o usuario já tem código

btnOk.Tag = ALTERACAO

 

'Descobir qual o código da pessoa

lvSql = "SELECT Codigo FROM cadastro "

lvSql = lvSql + " WHERE Nome='" & txtNome.Text & "'"

lvSql = lvSql + " AND Telefone='" & txtTelefone.Text & "'"

Set lvRegistro = gvConexao.Execute(lvSql)

 

If Not lvRegistro.EOF Then 'Tem registro

mvCodigo = lvRegistro("Codigo")

Else

MsgBox "Desculpe, o cadastro não foi realizado corretamente", _

vbCritical, "Erro na Operação"

End If

 

'Ativas as tabs do cadastro

For i = 1 To stabPessoas.Tabs - 1 Step 1

stabPessoas.TabEnabled(i) = True

Next

 

End If

 

Else

Unload Me

End If

End Sub

 

Grato;

Diogo Alló

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cláudio não sei pq aqui na minha máquina ele roda normalmente tanto testando quanto o exe dele. Mas no computador a onde ele realmente execulta dá esse erro.

 

Grato;

Diogo Alló

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa, isso está estranho.

 

Quando você faz um select ele funciona?

 

Tente verificar se o arquivo access não está como somente leitura.

 

Olha só, olhando melhor seu código agora, repare que em alguns pontos, você não colocou campos do tipo texto entre aspas simples:

 

lvSql = lvSql & ", " & FormataData(dtNascimento.Value)

lvSql = lvSql & ", '" & txtDDDTelefone.Text

lvSql = lvSql & "', '" & txtDDDCelular.Text

lvSql = lvSql & "', '" & txtDDDFax.Text

lvSql = lvSql & "', " & gv_CodigoUsuario & ")"

 

Possivelmente esse pode ser o erro. Tente corrigir e testa para ver se funfa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok Claudio vou verificar. Mas tenho outra pergunta, quando mando executar meu projeto ele fala q não encontra o comando chr, Ltrim, Str..... Oq de ve ser ? Por já muito obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso está ocorrendo na máquina que está fazendo o projeto ou na máquina que está rodando?

 

Se for na máquina que está rodando, pode ser que você esteja utilizando variáveis de uma DLL e essa DLL não exista na máquina.

 

Parece meio estranho, mas uma vez fiz um projeto que utilizava EXCEL, e em uma das máquinas que rodei o programa, não havia excel. Mesmo quando ele não usava as variáveis do EXCEL, dava erro em umas outras funções básicas do VB, como o mid por exemplo.

 

Tente dar uma olhada nisso, pode ser que a DLL que falte é justamente a de conexão com o banco, se for isso, achamos o motivo do erro anterior.

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Cláudio , então esse erro ocorre na máquina em q estou fazendo o projeto. você poderia me ajudar ? Tem alguma dll que eu teria q colocar ? você tem msn ?

 

Abraços;

Diogo Alló

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vê se está feita a referência às bibliotecas

Visual Basic For Applications

Visual Basic runtime objects and procedures

VIcual Basic objects and procedures

OLE Automation

 

São as DLL básicas que o você utiliza para suas funções internas.

 

Me mande um e-mail para claudio.rodriguesneto@gmail.com se precisar de ajuda ainda.

 

Falou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.