none
tipo de dados incompatível na expressão de critério ao Salvar RRS feed

  • Pergunta

  • Bom dia pessoal, alguém pode me ajudar a identificar onde esta o erro. na hora de salvar apresenta o erro:

                                                    " tipo de dados incompatível na expressão de critério "

    segue o código

     Private Sub PGravaSaida()
            Using con As OleDbConnection = getConnection()
                Try
                    con.Open()
                    Dim total As Integer
                    If dtItems.Rows.Count > 0 Then
                        For i = 0 To dtItems.Rows.Count - 1
                            total = ObterProdutoEstoque(dtItems.Rows(i)("Descricao"))


                            If (dtItems.Rows(i)("Quantidade")) > total Then
                                MsgBox(" PRODUTO ZERADO OU QUANTIDADE INSUFICIENTE " & dtItems.Rows(i)("Descricao"), MsgBoxStyle.Information, Title:="AVISO!")
                                Exit Sub
                            Else
                                Dim sql As String = "INSERT INTO Tab_Saida (CodigoProduto,Grupo,Quantidade,ValorUnitario,ValorTotal,CodigoNotaFiscal,Nome,Observacao,Data,CodigoUnidade) VALUES (?,?,?,?,?,?,?,?,?,?)"
                                Dim cmd As OleDbCommand = New OleDbCommand(sql, con)
                                cmd.Parameters.Add(New OleDb.OleDbParameter("@CodigoProduto", SqlDbType.VarChar)).Value = dtItems.Rows(i)("Codigo")
                                cmd.Parameters.Add(New OleDb.OleDbParameter("@Grupo", dtItems.Rows(i)("Grupo")))
                                cmd.Parameters.Add(New OleDb.OleDbParameter("@Quantidade", dtItems.Rows(i)("Quantidade")))
                                cmd.Parameters.Add(New OleDb.OleDbParameter("@ValorUnitario", dtItems.Rows(i)("Vunitario")))
                                cmd.Parameters.Add(New OleDb.OleDbParameter("@ValorTotal", dtItems.Rows(i)("Vtotal")))
                                cmd.Parameters.Add(New OleDb.OleDbParameter("@CodigoNotaFiscal", txtCodigoNotaFiscal.Text))
                                cmd.Parameters.Add(New OleDb.OleDbParameter("@Nome", txtNome.Text))
                                cmd.Parameters.Add(New OleDb.OleDbParameter("@Observacao", txtObservacao.Text))
                                cmd.Parameters.Add(New OleDb.OleDbParameter("@Data", txtData.Text))
                                cmd.Parameters.Add(New OleDb.OleDbParameter("@CodigoUnidade", txtCodigoUni.Text))


                                'inserir no histórico

                                'fim da tabela de historico

                                'o Val transforma uma string em número e depois somar
                                total = Val(total - (dtItems.Rows(i)("Quantidade")))
                                sql = "UPDATE Tab_Entrada SET Total='" & total & "',Quantidade='" & dtItems.Rows(i)("Quantidade") & " ' WHERE CodigoProduto='" & dtItems.Rows(i)("Codigo") & "'"
                                cmd = New OleDbCommand(sql, con)
                                cmd.ExecuteNonQuery()
                            End If
                        Next
                    End If
                    MsgBox("CADASTRO REALIZADO COM SUCESSO", MsgBoxStyle.Information, Title:="Sucesso!")
                    dtItems.Clear()
                    ' LimparListView()

                Catch ex As Exception
                    MsgBox(ex.Message)
                Finally
                    con.Close()
                End Try
            End Using
        End Sub
    sexta-feira, 2 de fevereiro de 2018 10:23

Respostas

  • Boa noite.

    Troque a mensagem para que apareça a linha onde está o erro, assim:

    Catch ex As Exception
                    MsgBox(ex.ToString)
                Finally
                    con.Close()
                End Try


    MARIANO1776

    sexta-feira, 2 de fevereiro de 2018 23:13

Todas as Respostas

  • Oi pessoal podem me ajudar a identificar o meu erro, preciso de ajuda com urgência 
    sexta-feira, 2 de fevereiro de 2018 11:02
  • Qual das linhas exatamente dá o erro? Na execução do INSERT ou no UPDATE?

    Caso seja o UPDATE, o campo CodigoProduto é realmente VARCHAR?


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    sexta-feira, 2 de fevereiro de 2018 13:00
  • OI, não mostra a linha onde esta o erro, simplesmente a mensagem de erro

    sexta-feira, 2 de fevereiro de 2018 13:25
  • Coloque um breakpoint na linha do MsgBox no Catch, daí copie as informações de ex.StackTrace e ex.Data, e compartilhe aqui.

    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    sexta-feira, 2 de fevereiro de 2018 13:39
  • Oi, eu Coloquei um breakpoint na linha do MsgBox no Catch, ele parou lá mas não indicou nenhum erro, você poderias me dizer , onde eu vejo ex.StackTrace e ex.Data, para poder colocar aqui afim de você analisar?

    sexta-feira, 2 de fevereiro de 2018 16:25
  • Abra o painel Immediate do Visual Studio (Debug --> Windows --> Immediate) ou Ctrl + Alt + I, daí digite ex.StackTrace e dê enter, quando o breakpoint alcançar a linha do MsgBox.

    Outra forma é pressionar Shift+F9 enquanto seleciona a variável ex.


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    sexta-feira, 2 de fevereiro de 2018 17:21
  • Oi, quando eu faço os passos em cima aparece a seguinte mensagem:

    The expression cannot be evaluated while in run mode. 

    sera que podes me ajudar meu email é: ar.li.28200@gmail.com
    sexta-feira, 2 de fevereiro de 2018 17:46
  • Você tem que fazer isso na hora que a execução para no breakpoint.

    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    sexta-feira, 2 de fevereiro de 2018 18:15
  • Boa noite.

    Troque a mensagem para que apareça a linha onde está o erro, assim:

    Catch ex As Exception
                    MsgBox(ex.ToString)
                Finally
                    con.Close()
                End Try


    MARIANO1776

    sexta-feira, 2 de fevereiro de 2018 23:13
  • Bom dia, Arlindo.

    Conseguiu resolver sua dúvida?

    Se te ajudou, marque resposta/útil.


    MARIANO1776

    sexta-feira, 16 de fevereiro de 2018 12:59
  • Boa tarde,

    Por falta de retorno essa thread está encerrada.

    Se necessário, favor abrir uma nova thread.

    Atenciosamente,


    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 16 de fevereiro de 2018 19:06
    Moderador