Error con un código de consulta y conexión SqlServer con odbc

Tengo el siguiente código que me realiza la consulta y la conexión a bd

 Dim sconexion As OdbcConnection
            Dim sconsulta As String
            Dim sadaptador As OdbcCommand
            Dim scadena As String
            scadena = "Dsn=Precios;uid=Hablador;PWD=Admin231"
            Try
                sconexion = New Odbc.OdbcConnection(scadena)
                sconsulta = "SELECT dbo.OITM.IemName, dbo.ITM1.Price FROM(dbo.OITM, dbo.ITM1) WHERE dbo.OITM.ItemCode = dbo.ITM1.ItemCode AND (dbo.OITM.CodeBars = @barra ) AND (dbo.ITM1.PriceList = 1)"
                sadaptador.Parameters.AddWithValue("@barra", TextBox1.Text)
                sadaptador = New OdbcCommand(sconsulta, sconexion)
                'MsgBox(sadaptador)
            Catch ex As Exception
                MessageBox.Show("Error al abrir la conexión:" & vbCrLf & ex.Message)
                Exit Sub
            End Try

Cuando ejecuto mi formulario y le doy un numero que existe en la base de datos recibo el siguiente error 

Si alguno me puede ayudar estaría agradecido, además si me pueden decir que me falta para mostrar los campos que solicito en el select en un label también estaré más agradecido.

Feliz día a todos

2 respuestas

Respuesta
2

Creo que debes declarar tus variables como en el ejemplo, además no veo que tengas declarada la variable "sconexion"


Dim conn As New System.Data.Odbc.OdbcConnection

Revisalo y valora la respuesta

Hola la variable esta declarada, es la primera línea que esta escrita en el código que puse, solo que se idento mal. Ya revise el ejemplo y están declaradas de la misma forma.

Algún otro consejo?

    Public Sub ConnectToOdbc()
        Dim conn As New System.Data.Odbc.OdbcConnection
        conn.ConnectionString = & _
            "FIL=MS Access;DSN=valid data source name"
        Try
            conn.Open()
            'Aquí van las operaciones con la conexión abierta
        Catch ex As Exception
            MessageBox.Show("Error al conectar con la base de datos")
        Finally
            conn.Close()
        End Try
    End Sub

 Intenta usando el ejemplo. desde la declaración se genera la nueva instancia del objeto.

Respuesta

El problema esta en tus líneas de código. Te anexo un ejemplo que acabo de hacer. El proveedor es SQL pero sera igual.

los objetos command poseen metodos de ejecucion directa. Ver executeNonQuery y executereader / execute scalar.

Dim aa As New System.Data.SqlClient.SqlConnection
aa.ConnectionString = "connectionstrign"
aa.Open()

Dim consulta As String = "Select * from Aplicacion"

Dim command As New SqlClient.SqlCommand
command.CommandText = consulta
command.Connection = aa

Dim reader As System.Data.SqlClient.SqlDataReader = command.ExecuteReader()
If reader.HasRows Then
MsgBox("tiene filas")
Else
MsgBox("no tiene filas")
End If

Aa. Close()

Cualquier duda me dices.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas