ERRO AO INCLUIR UM REGISTRO NA TABELA ACCESS VBNET

HELIOPASSOS 16/03/2017 09:58:01
#472472
Bom dia, pessoal!

Tenho uma situação e não estou conseguindo ver o erro. No form principal eu passo as informações que serão incluídas na tabela:
 Private Sub btnIncluir_Click(sender As Object, e As EventArgs) Handles btnIncluir.Click
        If txtDesc.Text = String.Empty Then
            MsgBox([Ô]Informe o nome do Produto[Ô])
            txtDesc.Focus()
            Return
        End If
        Try
            acc.IncluirProd(txtDesc.Text, txtUnidade.Text, Val(txtSAnter.Text), cboSelecione.Text, txtObs.Text)
            MsgBox([Ô]Dados Salvos com sucesso![Ô])
        Catch ex As Exception
            MsgBox([Ô]Erro ao incluir dados![Ô] & vbCrLf & Err.Number & vbCrLf & Err.Description)
        End Try
        CarregaDadosProd()
    End Sub
E na minha classe, que faço a carga:

Public Sub IncluirProd(ByVal Descricao As String, ByVal Unidade As String, ByVal SAnterior As Integer, ByVal Especie As String, ByVal Obs As String)
        Try
            cn = getConexaoDB()
            Cmd.Connection = cn
            Cmd.CommandText = [Ô]INSERT INTO PRODUTOS (Descricao, Unidade, SAnterior, Especie, Obs ) [Ô] & [Ô] VALUES (@Descricao, @Unidade, @SAnterior, @Especie, @Obs)[Ô]
            Cmd.CommandType = CommandType.Text
            With Cmd.Parameters
                .Add(New OleDbParameter([Ô]@Descricao[Ô], OleDbType.VarChar, 200, [Ô]Descricao[Ô]))
                .Add(New OleDbParameter([Ô]@Unidade[Ô], OleDbType.VarChar, 25, [Ô]Unidade[Ô]))
                .Add(New OleDbParameter([Ô]@SAnterior[Ô], OleDbType.Integer, 5, [Ô]SAnterior[Ô]))
                .Add(New OleDbParameter([Ô]@Especie[Ô], OleDbType.VarChar, 20, [Ô]Especie[Ô]))
                .Add(New OleDbParameter([Ô]@Obs[Ô], OleDbType.VarChar, 255, [Ô]Obs[Ô]))
            End With
            Cmd.ExecuteNonQuery()
        Catch ex As Exception
            Throw ex
        Finally
            closeConexaoDB(cn)
        End Try
    End Sub

Quando Executo a querie para incluir está me retornando erro código 5 o Valor @Descricao não tem valor padrão!  (Na depuração me mostra o valor digitado correto)
Como resolvo isto, pois é só uma inclusão, simples de tudo, estou usando access 2010 (estou usando mdb, versão 4.0 : <add name=[Ô]ConexaoEstq[Ô] providerName=[Ô]System.Data.OleDb[Ô] connectionString=[Ô]Provider=Microsoft.Jet.OleDb.4.0; Data Source=C:\dados\Estoque.mdb[Ô]/>
Framework 4.5.2
Alguém poderia me indicar onde estou errando????

Obrigado.

OMAR2011 16/03/2017 11:51:24
#472474
Resposta escolhida
Coloque um valor para Descricao, Unidade, SAnterior, Especie, Obs
Não tem nenhum.
Descricao = Cachorro
unidade = 2 eeeeeeeeeee assim por diante
PERCIFILHO 16/03/2017 12:38:54
#472475
Posso estar falando besteira, mas em cada parâmetro adicionado, a variável deveria estar sem as aspas, não é?
.Add(New OleDbParameter([Ô]@Descricao[Ô], OleDbType.VarChar, 200, Descricao))
.Add(New OleDbParameter([Ô]@Unidade[Ô], OleDbType.VarChar, 25, Unidade))
.Add(New OleDbParameter([Ô]@SAnterior[Ô], OleDbType.Integer, 5, SAnterior))
.Add(New OleDbParameter([Ô]@Especie[Ô], OleDbType.VarChar, 20, Especie))
.Add(New OleDbParameter([Ô]@Obs[Ô], OleDbType.VarChar, 255, Obs))
HELIOPASSOS 16/03/2017 12:41:55
#472476
Engano seu Omar 2017! Estou passando os valores na rotina: acc.IncluirProd(txtDesc.Text, txtUnidade.Text, Val(txtSAnter.Text), cboSelecione.Text, txtObs.Text)
Na Classe ao passar o cursor nas variáveis estão os valores conforme digitado no Formuário. Com certeza o problema é outro! Obrigado pela tentativa. Ainda continuo sofrendo buscando outras soluções...
HELIOPASSOS 16/03/2017 12:56:09
#472477
Boa tarde, sr. PerciFilho. Tirando as aspas dá erro Expression Expected.
Severity Code Description Project File Line Suppression State
Error BC30201 Expression expected. Estq C:\Dados\Estq\Estq\AcessoDados.vb 35 Active

Obrigado, mesmo assim.
NILSONTRES 16/03/2017 13:09:42
#472478
O Problema deve estar na no commandtext, para testar deixe a descrição após a unidade ex:
.Add(New OleDbParameter([Ô]@Unidade[Ô], OleDbType.VarChar, 25, [Ô]Unidade[Ô]))
.Add(New OleDbParameter([Ô]@Descricao[Ô], OleDbType.VarChar, 200, [Ô]Descricao[Ô]))
Fatalmente o erro vai dar na unidade.
HELIOPASSOS 16/03/2017 13:43:36
#472480
Nilson. Troquei a ordem e mesmo assim continua dando o erro o Parâmetro @Descricao não tem valor padrão. Erro 5
NILSONTRES 16/03/2017 13:50:19
#472481
Se vc testou que a função esta realmente recebendo os valores, resta saber se existe esse campo na sua tabela.
OMAR2011 16/03/2017 14:03:40
#472482
Se recebe um valor então tente isto.
With Cmd.Parameters
.Add(New OleDbParameter([Ô]@Descricao[Ô], OleDbType.VarChar, 200, [Ô]Descricao[Ô])).Value = Descricao
.Add(New OleDbParameter([Ô]@Unidade[Ô], OleDbType.VarChar, 25, [Ô]Unidade[Ô])).Value = Unidade
.Add(New OleDbParameter([Ô]@SAnterior[Ô], OleDbType.Integer, 5, [Ô]SAnterior[Ô])).Value = SAnterior
.Add(New OleDbParameter([Ô]@Especie[Ô], OleDbType.VarChar, 20, [Ô]Especie[Ô])).Value = Especie
.Add(New OleDbParameter([Ô]@Obs[Ô], OleDbType.VarChar, 255, [Ô]Obs[Ô])).Value = Obs
End With
HELIOPASSOS 16/03/2017 14:04:11
#472483
Existe sim. Já tinha ate olhado isto. Então fiz estas alterações:
Cmd.CommandText = [Ô]INSERT INTO PRODUTOS (Descricao, Unidade, SAnterior, Especie, Obs) VALUES (@Descricax, @Unidade, @SAnterior, @Especie, @Obs)[Ô]

Cmd.Parameters.Add(New OleDbParameter([Ô]@DescricaO[Ô], OleDbType.VarChar, 200, [Ô]Descricao[Ô]))

e ocorreu o mesmo erro!
JABA 16/03/2017 14:46:31
#472486
Acredito que seja o seguinte. Certamente você está utilizando um SqlCommand para tudo, aí os parâmetros(o tal do cmd.Parameters), utilizados em outros casos, continuam lá, por isso o erro. Para contornar isso, dê um Clear neles, conforme abaixo:

Public Sub IncluirProd(ByVal Descricao As String, ByVal Unidade As String, ByVal SAnterior As Integer, ByVal Especie As String, ByVal Obs As String)
Try
cn = getConexaoDB()
Cmd.Connection = cn
Cmd.CommandText = [Ô]INSERT INTO PRODUTOS (Descricao, Unidade, SAnterior, Especie, Obs ) [Ô] & [Ô] VALUES (@Descricao, @Unidade, @SAnterior, @Especie, @Obs)[Ô]
Cmd.CommandType = CommandType.Text
With Cmd.Parameters
[txt-color=#e80000].Clear() [ô]Adicione apenas essa linha[/txt-color]
.Add(New OleDbParameter([Ô]@Descricao[Ô], OleDbType.VarChar, 200, [Ô]Descricao[Ô]))
.Add(New OleDbParameter([Ô]@Unidade[Ô], OleDbType.VarChar, 25, [Ô]Unidade[Ô]))
.Add(New OleDbParameter([Ô]@SAnterior[Ô], OleDbType.Integer, 5, [Ô]SAnterior[Ô]))
.Add(New OleDbParameter([Ô]@Especie[Ô], OleDbType.VarChar, 20, [Ô]Especie[Ô]))
.Add(New OleDbParameter([Ô]@Obs[Ô], OleDbType.VarChar, 255, [Ô]Obs[Ô]))
End With
Cmd.ExecuteNonQuery()
Catch ex As Exception
Throw ex
Finally
closeConexaoDB(cn)
End Try
End Sub

Página 1 de 2 [17 registro(s)]
Tópico encerrado , respostas não são mais permitidas