ERRO AO FAZER A INCLUSAO

PCORREA 06/03/2013 16:55:41
#420043
E aí pessoal,

Aí vai um problema do Galo Cego aqui.

Ao clicar no botão GravarRegistro, é apresentado o seguinte erro:

Run-timer error [ô]-2147217904(80040e10)[ô]
Nenhum valor foi fornecido para um ou mais parêmetros

Ele aponta para a linha:
.Execute

segue o código:

Private Sub GravarDados()

Dim cnnComando As New ADODB.Command
Dim vSql As String
Dim vCod As Long

vCod = Val(txtCodLivro.Text)
If vInclusao Then
vSql = [Ô]INSERT INTO Livros [Ô] & [Ô](CodLivro, Titulo, Autor, CodEditora, CodCategoria, AcompCd, AcompDisquete, Idioma, Observacoes) VALUES ([Ô] & vCod & [Ô], [ô][Ô] & txtTitulo.Text & [Ô][ô], [ô][Ô] & txtAutor.Text & [Ô][ô], [Ô] & vCodEditora & [Ô], [Ô] & vCodCategoria & [Ô], [Ô] & vAcompCd & [Ô], [Ô] & vAcompDisquete & [Ô], [Ô] & vIdioma & [Ô], [ô][Ô] & txtObservacoes.Text & [Ô][ô]);[Ô]
Else
vSql = [Ô]UPDATE Livros Set Titulo = [ô][Ô] & txtTitulo.Text & [Ô][ô], Autor = [ô][Ô] & txtAutor.Text & [Ô][ô], CodEditora = [Ô] & vCodEditora & [Ô], CodCategoria = [Ô] & vCodCategoria & [Ô], AcompCd = [Ô] & vAcompCd & [Ô], AcompDisquete = [Ô] & vAcompDisquete & [Ô], idioma = [Ô] & vIdioma & [Ô], Observacoes = [ô][Ô] & txtObservacoes.Text & [Ô][ô] WHERE CodLivro = [Ô] & vCod & [Ô];[Ô]
End If

With cnnComando
.ActiveConnection = cnnBiblio
.CommandType = adCmdText
.CommandText = vSql
.Execute
End With



O que acontece?????
LLAIA 06/03/2013 17:30:16
#420052
Algum(ns) campo(s) especificado(s) nestas queries não existe(m) na tabela. Verifique isto primeiro.
PCORREA 07/03/2013 08:31:32
#420080
Cara, olhei todos os campos e estão iguaizinhos aos da tabela.
PCORREA 07/03/2013 09:21:39
#420085
Só um detalhe,

O instrução SELECT está funcionando, pois eu cadastro manualmente os dados, e quando o txtCodigo perde o foco ele me traz os dados certinho.
PCORREA 07/03/2013 09:36:33
#420087
Procurando no google, achei um cara com o mesmo problema que eu, mas só que o fórum não estava completo, só que ele escreveu que tinha achado o problema e era na variável vAcompcd e vAcompDisquete, pois as duas são do tipo boolean, e no banco de dados a estrutura do campo estava como Sim/Não. Segue o código:

Private Sub chkAcompCd_Click()
[ô]Verifica se chkAcompCD está ou não marcada, e atribui a vAcompCD o valor correspondente:
If chkAcompCd.Value = vbChecked Then
vAcompCd = True
Else
vAcompCd = False
End If
End Sub

Valeu
LLAIA 07/03/2013 09:49:02
#420088
Coloque a variável vSql em uma MSgBox, e veja o que ela retorna. Talvez vc consiga entender o que tá acontecendo.
PCORREA 07/03/2013 12:59:19
#420106
Veja o que aparece

INSERT INTO Livros (CodLivro, Titulo, Autor, CodEditora, CodCategoria, AcompCd, AcompDisquete, Idioma, Observacoes) VALUES (2, [ô]Aa[ô], [ô]Aa[ô], 1, 1, Verdadeiro, Verdadeiro, 0, [ô]Aa[ô]);

A tabela tá igualzinha...

LLAIA 07/03/2013 13:41:47
#420113
Onde tá Verdadeiro, tente trocando para True ou False. Se der certo use a função [txt-size=2]IIf[/txt-size] para tratar isso na query.
PCORREA 07/03/2013 15:30:14
#420118
E aí Leandro...
Cara como estou iniciando em vb, eu ainda não consigo montar essa query que você me passou.
Será que vc poderia me ajudar, mais uma vez.
Segue o código:

Private Sub chkAcompCd_Click()
[ô]Verifica se chkAcompCD está ou não marcada, e atribui a vAcompCD o valor correspondente:
If chkAcompCd.Value = vbChecked Then
vAcompCd = True
Else
vAcompCd = False
End If
End Sub

Valeu.
FFCOUTO 07/03/2013 16:02:59
#420119
Resposta escolhida
é bem simples resolver este problemas sem o uso do IIF. Na verdade, todo campo Boolean é um número inteiro de valores 0 e 1. Então é necessário apenas usar a função ABS.

Veja:

If vInclusao Then
vSql = [Ô]INSERT INTO Livros [Ô] & [Ô](CodLivro, Titulo, Autor, CodEditora, CodCategoria, AcompCd, AcompDisquete, Idioma, Observacoes) VALUES ([Ô] & vCod & [Ô], [ô][Ô] & txtTitulo.Text & [Ô][ô], [ô][Ô] & txtAutor.Text & [Ô][ô], [Ô] & vCodEditora & [Ô], [Ô] & vCodCategoria & [Ô], [Ô] & [txt-color=#e80000]ABS([/txt-color]vAcompCd[txt-color=#e80000])[/txt-color] & [Ô], [Ô] & [txt-color=#e80000]ABS([/txt-color]vAcompDisquete[txt-color=#e80000])[/txt-color] & [Ô], [Ô] & vIdioma & [Ô], [ô][Ô] & txtObservacoes.Text & [Ô][ô]);[Ô]
Else
vSql = [Ô]UPDATE Livros Set Titulo = [ô][Ô] & txtTitulo.Text & [Ô][ô], Autor = [ô][Ô] & txtAutor.Text & [Ô][ô], CodEditora = [Ô] & vCodEditora & [Ô], CodCategoria = [Ô] & vCodCategoria & [Ô], AcompCd = [Ô] & [txt-color=#e80000]ABS([/txt-color]vAcompCd[txt-color=#e80000])[/txt-color] & [Ô], AcompDisquete = [Ô] & [txt-color=#e80000]ABS([/txt-color]vAcompDisquete[txt-color=#e80000])[/txt-color] & [Ô], idioma = [Ô] & vIdioma & [Ô], Observacoes = [ô][Ô] & txtObservacoes.Text & [Ô][ô] WHERE CodLivro = [Ô] & vCod & [Ô];[Ô]
End If


Espero ter ajudado.
PCORREA 07/03/2013 16:16:11
#420121
Valeu pela resposta.

Deu certinho.

VALEU.
Tópico encerrado , respostas não são mais permitidas