Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/11/2014, 10:07
jogpe
 
Fecha de Ingreso: octubre-2010
Mensajes: 20
Antigüedad: 13 años, 6 meses
Puntos: 0
Pregunta Problema al llenar ComboBox, mensaje sólo muestra nombres de columnas en BD

Qué tal, estoy programando una aplicación usando WinFroms VS 2013 que se conecta a una BD de Access

El problema que tengo es a la hora de llenar un combo box a partir de la selección de un Item en otro combo box, abajo el código

Código:
Dim Tabla As String
    Dim Tipo As Object
    Dim cmb As Object
    Dim Donde As String
    Dim Columna As String
    Dim val As Integer
    Dim Id As Object
    Dim Ordenar As String
    Dim conn As New OleDbConnection
    Dim sqlStr As String
Private Sub cmbTipo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbTipo.SelectedIndexChanged
        cmbInsumo.Items.Clear()
        val = 1
        LlamaCmb(val)
    End Sub
    Private Sub cmbInsumo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbInsumo.SelectedIndexChanged
        cmbDesc.Items.Clear()
        val = 0
        LlamaCmb(val)
    End Sub
 Private Sub LlamaCmb(val)
        Tabla = "Insumos"
        If val = 1 Then
            Tipo = cmbTipo.SelectedItem
            cmb = cmbInsumo
            Donde = "Tipo_Insumo"
            Columna = "Insumo), Insumo_Id"
            Ordenar = "Insumo"
        ElseIf val = 0 Then
            Tipo = cmbInsumo.SelectedItem
            cmb = cmbDesc
            Donde = "Insumo"
            Columna = "Descripcion), Insumo_Id "
            Id = "Insumo_Id"
            Ordenar = "Descripcion"
        End If
        CargaCmb(Tabla, Tipo, cmb, Donde, Columna)
        Tabla = ""
        Tipo = ""
        cmb = ""
        Donde = ""
        Columna = ""
    End Sub
    Private Sub CargaCmb(Tabla, Tipo, cmb, Donde, Columna)
        Try
            Dim com As New OleDbCommand
            Dim lee As OleDbDataReader
            conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\proyecto.satpc240\Documents\DB_RecursosMateriales.accdb"
            conn.Open()
            com = New OleDbCommand
            com.Connection = conn
            sqlStr = "SELECT Distinct(" & Columna & " FROM " & Tabla & " Where " & Donde & " ='" &
                                    Tipo & "' Order By " & Ordenar
            com.CommandType = CommandType.Text
            com.CommandText = sqlStr
            lee = com.ExecuteReader()
            Do While lee.Read()
                cmb.Items.Add(lee(Columna))
                cmb.ValueMember = lee(Id).ToString
            Loop
            conn.Close()
        Catch ex As Exception
            conn.Close()
            MsgBox("Error: " & ex.Message)
        End Try
    End Sub
La excepción solamente despliega como mensaje de error el contenido de la variable Columna : "Insumo), Insumo_Id"

Francamente estoy perdido, ¿Alguien sabe qué podría hacer o leer para saber como darle solución a este problema