none
busqueda de combo box RRS feed

  • Pregunta

  • realizo una busqueda en una tabla de producto de varias empresa donde la realiso x empresa utiliso capas este es el  codigo lo q esta en negrita son los error

     Private Sub cargarProducto()
            Try
                cmbcompras.DataSource = daoproducto.cargarProducto(RecolectarDatos.Instance.Dato1)
                cmbcompras.DisplayMember = "Descripcion"
                cmbcompras.ValueMember = "codigoproducto"

                cmbcompras.AutoCompleteCustomSource = daoproducto.LoadAutoComplete(RecolectarDatos.Instance.Dato1)
                cmbcompras.AutoCompleteMode = AutoCompleteMode.Suggest
                cmbcompras.AutoCompleteSource = AutoCompleteSource.CustomSource

            Catch ex As Exception
                MessageBox.Show(ex.Message, "IMPSA", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        End Sub


    Public Shared Function cargarProducto(emp As Int16) As DataTable
            Using conn As New MySqlConnection(ConfigurationManager.ConnectionStrings("cn").ToString())
                Dim dt As New DataTable
                conn.Open()
                Dim oComando As New MySqlCommand("select concat_ws ('  ',productos.cod_produc,categorias.cat_nombre,marca.descripcion,subcategorias.ta_nombre) as Descripcion  FROM  productos INNER JOIN Categorias ON productos.idcategoria = Categorias.idcategoria INNER JOIN marca ON productos.idmarca = marca.idmarca INNER JOIN Subcategorias ON productos.idsubcategoria = Subcategorias.idsubcategoria WHERE  productos.idempresa ='" & emp & "'", conn)
                oComando.Parameters.AddWithValue("?productos.idempresa", emp)
                Dim da As New MySqlDataAdapter(oComando)
                da.Fill(dt)
                Return dt
            End Using
        End Function

        Public Shared Function LoadAutoComplete() As AutoCompleteStringCollection
            Dim dt As DataTable = cargarProducto(emp as Int16)
            Dim stringCol As New AutoCompleteStringCollection()
            For Each row As DataRow In dt.Rows
                stringCol.Add(Convert.ToString(row("Descripcion")))
            Next
            Return stringCol
        End Function

    Error    5    El tipo 'AutoCompleteStringCollection' no está definido.    104    50    capadatos
    Error    6    Se esperaba una coma, ')' o la continuación de una expresión válida.    105    50    capadatos
    Error    7    El tipo 'AutoCompleteStringCollection' no está definido.        capadatos
    Error    8    'dt' no está declarado. Puede que esté inaccesible debido a su nivel de protección.   107    36    capadatos


    jueves, 19 de abril de 2018 16:53

Respuestas

  • "Dominio69" escribió:

    >     Public Shared Function LoadAutoComplete() As AutoCompleteStringCollection
    >         Dim dt As DataTable = cargarProducto(emp as Int16)
    >         Dim stringCol As New AutoCompleteStringCollection()
    >         For Each row As DataRow In dt.Rows
    >             stringCol.Add(Convert.ToString(row("Descripcion")))
    >         Next
    >         Return stringCol
    >     End Function
    >
    > Error    5    El tipo 'AutoCompleteStringCollection' no está definido.    104    50    capadatos
    > Error    6    Se esperaba una coma, ')' o la continuación de una expresión válida.    105    50    capadatos
    > Error    7    El tipo 'AutoCompleteStringCollection' no está definido.        capadatos
    > Error    8    'dt' no está declarado. Puede que esté inaccesible debido a su nivel de protección.   107    36    > capadatos

    Hola:

    Si la firma de la función 'cargarProducto' es la siguiente:

        Public Shared Function cargarProducto(emp As Int16) As DataTable

    a esa función le tienes que pasar un entero de 16 bits con signo, como por ejemplo:

        Dim emp As Int16 = 234 ' --> Especificar el valor que tenga la variable 'emp'.

        Dim dt As DataTable = cargarProducto(emp)

    Y en cuanto al mensaje de error que indica que el tipo 'AutoCompleteStringCollection' no está definido, y dado que indicas que "estás utilizando capas", lo único que puedo pensar por ahora es que en el ensamblado correspondiente a esa "capa" no tengas referenciado el ensamblado System.Windows.Forms.dll. Por tanto, asegúrate que dicho ensamblado se encuentra correctamente referenciado, y que al inicio de la clase donde se encuentre declarada la función LoadAutoComplete se encuentre importado el espacio de nombres System.Windows.Forms:

    Imports System.Windows.Forms
    
        Public Shared Function LoadAutoComplete() As AutoCompleteStringCollection
    
            Dim emp As Int16 = 234 ' --> Especificar el valor que tenga la variable 'emp'.
    
            Dim dt As DataTable = cargarProducto(emp)
    
            Dim stringCol As New AutoCompleteStringCollection()
    
            For Each row As DataRow In dt.Rows
                stringCol.Add(Convert.ToString(row("Descripcion")))
            Next
    
            Return stringCol
    
        End Function
    

    Observa la siguiente línea:

        Dim emp As Int16 = 234 ' --> Especificar el valor que tenga la variable 'emp'.

    He declarado una variable local llamada 'emp' y le he asignado el valor 234, porque no tengo ni la más mínima idea del valor correcto que debe tener. Si este valor no es fijo y puede variar de una a otra llamada a la función LoadAutoComplete, entiendo que lo correcto sería que esta función admita un parámetro de entrada donde se especifique el valor que deberá tener la variable 'emp':

       Public Shared Function LoadAutoComplete(emp As Int16) As AutoCompleteStringCollection
    
            Dim dt As DataTable = cargarProducto(emp)
    
            Dim stringCol As New AutoCompleteStringCollection()
    
            For Each row As DataRow In dt.Rows
                stringCol.Add(Convert.ToString(row("Descripcion")))
            Next
    
            Return stringCol
    
        End Function
    

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    domingo, 22 de abril de 2018 6:50
    Moderador

Todas las respuestas

  • Hola, en la función  LoadAutoComplete() e veo que estás pasando a la funcion cargarProducto un valor errado, ya que esa función recibo un Int16 y tu la estás llamando así: 

    Dim dt As DataTable = cargarProducto(emp as Int16)

    Cuando deberías pasarle un entero.

    Saludos.

    jueves, 19 de abril de 2018 17:25
  • "Dominio69" escribió:

    >     Public Shared Function LoadAutoComplete() As AutoCompleteStringCollection
    >         Dim dt As DataTable = cargarProducto(emp as Int16)
    >         Dim stringCol As New AutoCompleteStringCollection()
    >         For Each row As DataRow In dt.Rows
    >             stringCol.Add(Convert.ToString(row("Descripcion")))
    >         Next
    >         Return stringCol
    >     End Function
    >
    > Error    5    El tipo 'AutoCompleteStringCollection' no está definido.    104    50    capadatos
    > Error    6    Se esperaba una coma, ')' o la continuación de una expresión válida.    105    50    capadatos
    > Error    7    El tipo 'AutoCompleteStringCollection' no está definido.        capadatos
    > Error    8    'dt' no está declarado. Puede que esté inaccesible debido a su nivel de protección.   107    36    > capadatos

    Hola:

    Si la firma de la función 'cargarProducto' es la siguiente:

        Public Shared Function cargarProducto(emp As Int16) As DataTable

    a esa función le tienes que pasar un entero de 16 bits con signo, como por ejemplo:

        Dim emp As Int16 = 234 ' --> Especificar el valor que tenga la variable 'emp'.

        Dim dt As DataTable = cargarProducto(emp)

    Y en cuanto al mensaje de error que indica que el tipo 'AutoCompleteStringCollection' no está definido, y dado que indicas que "estás utilizando capas", lo único que puedo pensar por ahora es que en el ensamblado correspondiente a esa "capa" no tengas referenciado el ensamblado System.Windows.Forms.dll. Por tanto, asegúrate que dicho ensamblado se encuentra correctamente referenciado, y que al inicio de la clase donde se encuentre declarada la función LoadAutoComplete se encuentre importado el espacio de nombres System.Windows.Forms:

    Imports System.Windows.Forms
    
        Public Shared Function LoadAutoComplete() As AutoCompleteStringCollection
    
            Dim emp As Int16 = 234 ' --> Especificar el valor que tenga la variable 'emp'.
    
            Dim dt As DataTable = cargarProducto(emp)
    
            Dim stringCol As New AutoCompleteStringCollection()
    
            For Each row As DataRow In dt.Rows
                stringCol.Add(Convert.ToString(row("Descripcion")))
            Next
    
            Return stringCol
    
        End Function
    

    Observa la siguiente línea:

        Dim emp As Int16 = 234 ' --> Especificar el valor que tenga la variable 'emp'.

    He declarado una variable local llamada 'emp' y le he asignado el valor 234, porque no tengo ni la más mínima idea del valor correcto que debe tener. Si este valor no es fijo y puede variar de una a otra llamada a la función LoadAutoComplete, entiendo que lo correcto sería que esta función admita un parámetro de entrada donde se especifique el valor que deberá tener la variable 'emp':

       Public Shared Function LoadAutoComplete(emp As Int16) As AutoCompleteStringCollection
    
            Dim dt As DataTable = cargarProducto(emp)
    
            Dim stringCol As New AutoCompleteStringCollection()
    
            For Each row As DataRow In dt.Rows
                stringCol.Add(Convert.ToString(row("Descripcion")))
            Next
    
            Return stringCol
    
        End Function
    

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    domingo, 22 de abril de 2018 6:50
    Moderador