Datos desde SQL a ListBox

Iniciado por el_cantante, 29 Mayo 2012, 22:53 PM

0 Miembros y 3 Visitantes están viendo este tema.

el_cantante

Hola a todos!
Queria saber si por favor alguien me puede ayudar con un problema que tengo. Estoy tratando de interpretar un archivo EDI en formato EURITMO.  Lo que hago es abrir el archivo y luego recorrer con un while todos los renglones, buscar la palabra LIN (que identifica el detalle del pedido) y luego me desplazo hasta encontrar el codigo EAN del producto.
Esto lo hago de la siguiente forma:

 
  Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As system.EventArgs)  Handles Button2.Click

        If ListBox1.Items.Count = 0 Then

            Dim startIndex = -1

            startIndex = TextBox1.Text.IndexOf("LIN")

            While startIndex > 0

                Dim Stringa1 As String = TextBox1.Text

                Dim MID_VBNET As String = Stringa1.Substring(startIndex + 9, 13)

                ListBox1.Items.Add(MID_VBNET)

                startIndex = TextBox1.Text.IndexOf("LIN", startIndex + 1)

            End While

        End If

    End Sub


Una vez que tengo el codigo EAN de los productos dentro del ListBox1 lo que quisiera hacer es buscar mediante una query el codigo del articulo correspondiente (que se encuentra en mi base de datos)
La query seria  asi:
"SELECT OITM.ItemCode FROM OITM WHERE OITM.CodeBars = " & ListBox1.Text & ""
Lo que se me habia occurido es recuperar los datos directamente desde la base de datos filtrandolos en la query... pero la verdad que no se como seguir ni que hacer... alguien me podria dar una mano por favor??
Estoy usando VB 2008

Muchas gracias!!

Saludos
El sistema del zapping mental en su apogeo, donde las horas pasan con la velocidad de la vida. No es el mismo domingo del principio, es un domingo anterior, otra temporada en el infierno, siete di­as atras.

HdM

Buenas.

CitarUna vez que tengo el codigo EAN de los productos dentro del ListBox1 lo que quisiera hacer es buscar mediante una query el codigo del articulo correspondiente (que se encuentra en mi base de datos)
La query seria  asi:
Código:

"SELECT OITM.ItemCode FROM OITM WHERE OITM.CodeBars = " & ListBox1.Text & ""

Lo que se me habia occurido es recuperar los datos directamente desde la base de datos filtrandolos en la query... pero la verdad que no se como seguir ni que hacer... alguien me podria dar una mano por favor??

Y concretamente, ¿cuál es el problema que tienes?. Lo único que veo es que si el campo CodeBars es tipo texto, en la consulta que pones, te faltan las comillas simples.

Saludos.

- Nice to see you again -

el_cantante

Concretamente lo que necesitaba es listar los datos filtrados en una ListBox... pero esta tarde lo que consegui hacer es usar un DataGridView en vez del ListBox y asi consegui listar los datos filtrados, lo hice de la siguiente manera:

        If DataGridView1.RowCount = 0 Then
            cnString = "Database=database;Data Source=SERVER;User Id=sa;Password=password"
            Dim i
            For i = 0 To ListBox1.Items.Count - 1
                ListBox2.SelectedIndex = ListBox2.SelectedIndex + 1
                ListBox2.SelectedItem = ListBox2.SelectedIndex
                sqlQRY = "SELECT [@IEO_CPG_TRASITEMEDI].U_CPG_ITEMCODE, OITM.ItemName FROM [@IEO_CPG_TRASITEMEDI] INNER JOIN OITM ON [@IEO_CPG_TRASITEMEDI].U_CPG_ITEMCODE = OITM.ItemCode WHERE [@IEO_CPG_TRASITEMEDI].U_CPG_CODFORNEDI = CONVERT(NVARCHAR(15)," & ListBox2.SelectedItem & ")"

                conn = New SqlConnection(cnString)

                Try
                 
                    conn.Open()

                    da = New SqlDataAdapter(sqlQRY, conn)

       
                    Dim cb As SqlCommandBuilder = New SqlCommandBuilder(da)

                    da.Fill(ds, "ItemCode")

                    DataGridView1.DataSource = ds
                    DataGridView1.DataMember = "ItemCode"


                Catch ex As SqlException
                    MsgBox(ex.ToString)
                Finally
         
                    conn.Close()

                End Try

            Next
        End If


Entonces asi consegui filtrar los datos en base a la ListBox... Pero lo malo es que tengo por un lado una ListBox (la ListBox1 del anterior post) y por otro un DataGridView, la pregunta es, seria posible hacer que los datos que tengo en la ListBox aparecieran en una tercera columna de mi DataGridView ? O sea... tener todo junto en el DataGridView y no como ahora un poco en la ListBox y otro poco en el DataGridView

Muchas gracias!!

Saludos!
El sistema del zapping mental en su apogeo, donde las horas pasan con la velocidad de la vida. No es el mismo domingo del principio, es un domingo anterior, otra temporada en el infierno, siete di­as atras.

el_cantante

Con esto consigo pasar los datos del ListBox a un nuevo DataGridView

         DataGridView2.Columns.Add("ID", "ID2")
        ListBox2.SelectedItem = 0
        Dim ii
        For ii = 0 To ListBox1.Items.Count - 1
            ListBox2.SelectedIndex = ListBox2.SelectedIndex + 1
            ListBox2.SelectedItem = ListBox2.SelectedIndex
            DataGridView2.Rows.Add(ListBox2.SelectedItem)
        Next


Pero no consigo de ninguna manera agregar estos datos como parte de mi datagridview anterior... sera que no se puede en el caso que este asociado a una dataset?

Gracias

Saludos
El sistema del zapping mental en su apogeo, donde las horas pasan con la velocidad de la vida. No es el mismo domingo del principio, es un domingo anterior, otra temporada en el infierno, siete di­as atras.

HdM

Buenas.

No sé si acabo de entenderte. Interpreto que en el grid quieres mostrar todos los artículos que se encuentran en el listbox1. ¿Tienes que utilizar necesariamente un listbox para ir guardando los codbar de los artículos? Si no es así, podrias utilizar una variable auxiliar string para ir guardando los códigos que vas encontrando y luego esa variable utilizarla directamente en la consulta SELECT. Ésta te devolverá de una vez todos los artículos que te interesan (te ahorras el uso de bucle para cargar grid). Tampoco sé a qué se debe que utilices el listbox2 y que los campos que quieres añadir por código en la rejilla, no los incluyas en la consulta a bd para obtener directamente sus valores.

Saludos.

- Nice to see you again -

el_cantante

#5
No necesariamente tengo que usar un listbox.
Inicialmente comienzo desde un archivo de texto que cargo en un textbox y de ahí voy buscando los datos que me interesan y los escribía en un listbox (ya que inicialmente la idea era de usar varios listbox para cada segmento de datos que tenia que buscar), luego agregue el listbox2 porque es otra columna de datos, en el listbox1 escribía los codebar que encontraba en el archivo de texto y en el listbox2 escribía los códigos de los artículos.
De todos modos vi que no era una muy buena idea usar varios listbox y que seria mejor usar solo un datagridview, es por eso que pensé en "trasladar" esos datos al interno del datagridview. Creo que es una muy buena idea la que me sugieres, me podrías indicar por favor un ejemplo de como ir guardando en una variable todos estos datos que voy encontrando? y como se puede usar la variable dentro de la query?
Los datos que voy encontrando forman parte del archivo de texto que cargo en un TextBox, una vez que tengo estos datos (por ejemplo el ListBox2 que contiene el código del articulo del cliente) lo comparo con mis datos de la base de datos para así obtener mi código articulo, como se dice aquí en Italia "una transcodifica"

Muchas gracias por tu tiempo!

Saludos!

El sistema del zapping mental en su apogeo, donde las horas pasan con la velocidad de la vida. No es el mismo domingo del principio, es un domingo anterior, otra temporada en el infierno, siete di­as atras.

HdM

Buenas.

Bueno la idea es que esa variable luego pueda ser utilizada en una consulta "SELECT... WHERE... IN " + variable, donde variable sería algo así (codbar1,codbar2,codbar3,...)

Por tanto la variable inicialmente podría ser var="(" y a medida que vas recorriendo el fichero y encontrando codbar, los vas agregando: var=var+"'"+codbar+"',".

Saludos.

- Nice to see you again -