none
"Tipo de dados incompatível na expressão de critério" RRS feed

  • Pergunta

  • E ai pessoal! Belezinha?

    Então, eu ando tentando carregar uma label com uma string, essa string vem de uma query que retorna a string que quero pela ID da table. Mas dá erro quando tento carregar essa label!

    Meu código é esse:

                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    
    
                'Espaço para selecionar e carregar o label com o tipo de mensalidade
    
    
                Dim dr As OleDbDataReader = Nothing
    
                Using con2 As OleDbConnection = conexao()
    
                    con2.Open()
    
                    Dim stg As String = "SELECT * FROM Servicos_mensais WHERE id_mensalidade='" & cbid.Text & "'"
    
                    Dim comando As OleDbCommand = New OleDbCommand(stg, con2)
    
                    dr = comando.ExecuteReader(CommandBehavior.SingleRow)
    
                    If dr.HasRows Then
                        dr.Read()
                        lblt.Text = dr.Item("Tipo")
                    End If
    
                End Using
    
    
    
    
                '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    

    Alguém sabe onde errei?

    sexta-feira, 18 de novembro de 2016 03:24

Respostas

Todas as Respostas

  • E ai pessoal! Belezinha?

    Então, eu ando tentando carregar uma label com uma string, essa string vem de uma query que retorna a string que quero pela ID da table. Mas dá erro quando tento carregar essa label!

    Meu código é esse:

                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    
    
                'Espaço para selecionar e carregar o label com o tipo de mensalidade
    
    
                Dim dr As OleDbDataReader = Nothing
    
                Using con2 As OleDbConnection = conexao()
    
                    con2.Open()
    
                    Dim stg As String = "SELECT * FROM Servicos_mensais WHERE id_mensalidade='" & cbid.Text & "'"
    
                    Dim comando As OleDbCommand = New OleDbCommand(stg, con2)
    
        'Linha que dá o erro -> dr = comando.ExecuteReader(CommandBehavior.SingleRow)
    
                    If dr.HasRows Then
                        dr.Read()
                        lblt.Text = dr.Item("Tipo")
                    End If
    
                End Using
    
    
    
    
                '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    Alguém sabe onde errei?

    CITANDO A LINHA ONDE DÁ O ERRO
    sexta-feira, 18 de novembro de 2016 03:25
  • sexta-feira, 18 de novembro de 2016 03:33
  • Olá!

    Provavelmente id_mensalidade é um número, e não um inteiro.. Se esse for o caso, você não deve utilizar aspas simples antes e depois do valor passado para a consulta:

    Dim stg As String = "SELECT * FROM Servicos_mensais WHERE id_mensalidade=" & cbid.Text

    De qualquer forma, eu recomendo que você não fique concatenando valores nas suas sentenças.. É super importante aprender o conceito de parâmetros do ADO.NET.. Isso evita essa dor de cabeça que você está tendo, além de outros problemas que você teria ao passar valores do tipo data/hora, evita SQL injection, etc.. Confira mais detalhes da funcionalidade de parâmetros no ADO.NET neste artigo:

    Parâmetros do ADO.NET: por favor, pare de concatenar strings nas suas sentenças SQL!

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    sexta-feira, 18 de novembro de 2016 08:34
    Moderador
  • Resolveu! Obrigado!
    sexta-feira, 18 de novembro de 2016 11:25