none
REPRESENTAR DATOS DE FORMA ORDENADA RRS feed

  • Pregunta

  • Buenas días para unos, buenas tardes para otros y buenas noches para el resto. Les saludo desde Venezuela agradeciendo de antemano cualquier ayuda sobre mi consulta la cual es la siguiente y es en Visual Basic .NET:

    Tengo un DataGridView cargado de la siguiente manera:

    100 X 1,00 CHANCE A 1:00 PM

    001 X 1,00 CHANCE A 1:00 PM

    010 X 1,00 CHANCE A 1:00 PM

    200 X 1,00 CHANCE A 1:00 PM

    002 X 1,00 CHANCE A 1:00 PM

    020 X 1,00 CHANCE A 1:00 PM

    Y quiero mostrar estos datos de le siguiente manera en otro DataGridView los cuales van a servir de parametros de impresión en una impresora tickera:

    CHANCE A 1:00 PM

    100 X 1,00 

    001 X 1,00 

    010 X 1,00

    200 X 1,00

    002 X 1,00

    020 X 1,00

    Es decir, que primero me aparezca la lotería (CHANCE A 1:00 PM) y debajo los números 100,001,010, etc, etc que pertenecen a esa loteria (CHANCE A 1:00 PM).

    Nuevamente gracias y saludos de corazón, recordandoles que:

    "El conocimiento humano pertenece al mundo y se este no se traspasa de generación en generación se pierde"



    domingo, 10 de abril de 2016 19:33

Todas las respuestas

  • usa el group by en la querry. 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    domingo, 10 de abril de 2016 22:28
  • Hola Federico, gracias por tu ayuda... Podrías por favor colocar como quedaría el Query ya que no manejo el método BY, recuerda también que quiero que primero se muestre la lotería y debajo los numero que pertenecen a esa lotería, es decir:

    CHANCE A 1:00 PM 

    100 x 1,00

    001 x 1,00

    010 x 1,00

    200 x 1,00

    002 x 1,00

    020 x 1,00

    domingo, 10 de abril de 2016 22:56
  • me podrias pasar como haces la consulta?

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    domingo, 10 de abril de 2016 23:10
  • Claro que si hermano...

    "SELECT * FROM tbl_gtt_Temp_Detalle_Ticket"

    Esta el la consulta que me carga un DataGridView de esta manera:

    100 X 1,00 CHANCE A 1:00 PM

    001 X 1,00 CHANCE A 1:00 PM

    010 X 1,00 CHANCE A 1:00 PM

    200 X 1,00 CHANCE A 1:00 PM

    002 X 1,00 CHANCE A 1:00 PM

    020 X 1,00 CHANCE A 1:00 PM

    Como ves, el Query es común y corriente.

    Lo que no se es como quedaría la consulta para que me lo muestre así:

    CHANCE A 1:00 PM 

    100 x 1,00

    001 x 1,00

    010 x 1,00

    200 x 1,00

    002 x 1,00

    020 x 1,00


     

    domingo, 10 de abril de 2016 23:21
  • Chequea este post.

    https://social.msdn.microsoft.com/Forums/en-US/b54d2c92-6dbf-4f54-9e23-3a1303a20a93/row-grouping-in-datagridview-using-winforms?forum=winforms

    la primer respuesta es lo que necesitas. 


    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    domingo, 10 de abril de 2016 23:31
  • Hola que tal Federico, fijate estuve probando esos codigos y no me funcionan, porque quiero que lo agrupado vaya en una sola columna y el post que me pasaste habla de agrupar filas =(.
    lunes, 11 de abril de 2016 20:20
  • ok, entonces vos lo que queres es que en la misma columna aparescan esos datos?

    entonces lo que podes hacer es crear una datatable y armarla como vos queres. 

    Dim table As New DataTable' Create four typed columns in the DataTable.
    	table.Columns.Add("Dato", GetType(String))
    	
    
    	' Add five rows with those columns filled in the DataTable.
    	table.Rows.Add("CHANCE A 1:00 PM ")
    	table.Rows.Add("100 x 1,00")
    	table.Rows.Add("001 x 1,00")
    	table.Rows.Add("010 x 1,00")datagridview.bindingSource1.DataSource= table 
    

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    lunes, 11 de abril de 2016 20:26
  • Disculpa no entiendo tu ejemplo, porque los datos que colocas en:

    table.Rows.add("CHANCE A 1:00 PM") es insertado manualmente y esos datos estan guardados, es decir esos deberia armarse dinamicamente de acuerde a cada loteria (CHANCE A 1:00 PM y muestra todos los datos pertenecientes debajo) (CHANCE B 1:00 PM y muestra todos los datos pertenecientes)

    lunes, 11 de abril de 2016 20:43
  • lo que te di es un ejemplo para que veas a ver si es como queres que queden. 

    Si el resultado es correcto lo que podes hacer es al datareader le decis por cada linea que leas si la chance es igual a la variable x pone el valor sino agregar la change el valor y actualiza la varible. 


    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    lunes, 11 de abril de 2016 20:47
  • OK perfecto Federico, podria colocar el ejemplo un poco mas completo para asi poder entenderte, Gracias y disculpa tanta molestia, es que de verdad me he roto la cabeza pensando como hacer esto.
    lunes, 11 de abril de 2016 20:50
  • Private Sub rellenar(ByVal connection As SqlConnection)
        Using connection
            Dim command As SqlCommand = New SqlCommand( _
              "SELECT * FROM tabla;", _
              connection)
            connection.Open()
    
            Dim reader As SqlDataReader = command.ExecuteReader()
            Dim variable As String = String.Empty
            Dim tabla as DataTable
            tabla.Columns.Add("Chance", GetType(String))
    
            If reader.HasRows Then
                Do While reader.Read()
                    if reader.GetString(0) == variable then
                        tabla.Rows.Add(  reader.GetString(1))
                    else
                       variable = reader.GetString(0)
                         tabla.Rows.Add(  reader.GetString(0))
                      tabla.Rows.Add(  reader.GetString(1))
                    end if
                Loop
            Else
                Console.WriteLine("No rows found.")
            End If
    
            reader.Close()
        End Using
    End Sub

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    lunes, 11 de abril de 2016 20:58
  • Fijate Federico revisando el codigo que me pasas me saltan dos dudas:

    1.- tabla.Columns.Add("Chance", GetType(String)) CHANCE a 1:00 PM no es un valor fijo alli abri que colocar el valor de la loteria que este registrada

    2. Como vuelco ese datatable en el datagridview tomando en cuenta tu codigo

    lunes, 11 de abril de 2016 22:32
  • Te contesto las preguntas

    el punto 1

    primero definimos la variable que vamos a usar de flag. y despues le pedimos al reader que la compare con la primera fila, si este es distinto agrega el header que seria la columna 0 y despues el dato y actualiza la variable.

    Dim variable As String = String.Empty
            Dim tabla as DataTable
            tabla.Columns.Add("Chance", GetType(String))
    
            If reader.HasRows Then
                Do While reader.Read()
                    if reader.GetString(0) == variable then
                        tabla.Rows.Add(  reader.GetString(1))

    el punto dos lo haces mediante el datasource = tabla


    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    martes, 12 de abril de 2016 12:29
  • OK te entiendo perfectamente el segundo punto Federico pero fijate, ese CHANCE A 1:00 PM puede ser ZULIA A 4:30 PM o TACHIRA 7:00 PM por eso te lo comente
    martes, 12 de abril de 2016 13:44
  • por eso va a quedarte algo asi

    CHANCE A 1:00 PM

    Change 1

    Change 2 

    Change 3

    ZULIA A 4:30 PM

    Change 1

    Change 2 

    Change 3

    TACHIRA 7:00 PM

    ...


    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    martes, 12 de abril de 2016 13:46
  • OK entonces esta linea que significa, esa palabra chance que significa?

    tabla.Columns.Add("Chance", GetType(String))

    martes, 12 de abril de 2016 13:48
  • Es el nombre de la columna el header que te va a aparecer en el datagrid

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    martes, 12 de abril de 2016 13:50
  • Osea que esa palabra puede ser cualquiera para el header?
    martes, 12 de abril de 2016 13:53
  • Fiajte estoy implemetando tu codigo y me dice que la variable tabla se utiliza antes de que se le haya asignado una valor

    tabla.Columns.Add("Chance", GetType(String))

    martes, 12 de abril de 2016 14:07
  • Dim reader As SqlDataReader = command.ExecuteReader()
                Dim variable As String = String.Empty
                Dim tabla As DataTable
                tabla = Nothing

                tabla.Columns.Add("Chance", GetType(String))

    Fijate le asigne un valor NOTHING para quitar el error de la utilización antes dde...

    Pero ahora me da este error:

    Referencia a objeto no establecida como instancia de un objeto.

    martes, 12 de abril de 2016 14:23
  • Me perdiste, que te dice?

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    martes, 12 de abril de 2016 15:19
  • Referencia a objeto no establecida como instancia de un objeto. 

    Y me señala esta linea

    tabla.Columns.Add("Chance", GetType(String))

    martes, 12 de abril de 2016 15:22
  • Fijate tome tu codigo y los transforme una poco

    cn.Open()

            Dim comandoSQL As New SqlCommand("SELECT * FROM tbl_Detalle", cn)
            Dim reader As SqlDataReader = comandoSQL.ExecuteReader
            Dim variable As String = String.Empty



            If reader.HasRows Then
                Do While reader.Read()
                    Me.dgv_Preview.DataSource = Nothing

                    If reader.GetString(1) = variable Then
                        Me.dgv_Preview.Rows.Add(reader.GetString(2))

                    Else
                        variable = reader.GetString(1)
                        Me.dgv_Preview.Rows.Add(reader.GetString(1))
                        Me.dgv_Preview.Rows.Add(reader.GetString(2))


                    End If
                Loop
            Else
                Console.WriteLine("No rows found.")
            End If

    La primera vez utilizado lo hace asi:

    CHANCE A 1:00 PM 

    235 X 1,00

    Cuando se ejecuta el codigo por segunda vez lo hace asi:

    CHANCE A 1:00 PM 

    235 X 1,00

    CHANCE A 1:00 PM 

    235 X 1,00

    260 X 1,00

    que me pudiese estar faltando, cabe destacar que en vez de usa un datatable utilizo un datagridview con una columna creada en tiempo de diseño llamada preview, lo que veo que que no me esta refrescando el datagridview para luego cargarme los nuevos datos

    martes, 12 de abril de 2016 15:46
  • acordate de limpiar la datagrid 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    martes, 12 de abril de 2016 18:17
  • Si yo lo mando a limpiar con:

    me.dgv_Preview.datsource = Nothing no se si sera esta la mejor opción

    martes, 12 de abril de 2016 19:09
  • Perdon por la demora. proba esto

    me.dgv_Preview.Rows.Clear()


    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    miércoles, 13 de abril de 2016 15:39
  • Que tal Federico, te saludo nuevamente y te pregunto con respecto a este tema, logre solucionar ciertas cosas del codigo ahora fijata como pudiera hacer para que el:

    tabla.Rows.Add(  reader.GetString(1))

    me muestre los registros en dos filas

    es decir

    01 35

    40 75

    60

    porque con el codigo original me lo muestra asi:

    01

    35

    40

    75

    60

    Gracias de antemano


    Angel Jesus Gil Macayo

    jueves, 26 de mayo de 2016 20:43