none
Llenar dos datagrid el primero datos integros de una tabla, el segundo con todas las repeticiones de un dato. (2) RRS feed

  • Pregunta

  • <!-- /* Font Definitions */ @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin-top:0cm; margin-right:0cm; margin-bottom:10.0pt; margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing {mso-style-priority:1; mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} .MsoPapDefault {mso-style-type:export-only; margin-bottom:10.0pt; line-height:115%;} @page Section1 {size:612.0pt 792.0pt; margin:70.85pt 3.0cm 70.85pt 3.0cm; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

    La tabla  y la captura del programa es esta.

    http://www.imaxenes.com/imagen/seleccionardeunasolatabla1nc088w.jpg.html




    El código de mi formulario de búsqueda:

    Imports System.Data

    Imports System.Data.OleDb

    Imports ClaseConexion.XXX.cone

     

    Public Class p_vinos_bus_cos

        Inherits System.Windows.Forms.Form

    Public midataset As New DataSet

        'Mediante otro dataset consigo que no se repitan dos veces en la tabla.

        Public midataset2 As New DataSet

     

        'Declaración de dataset(la única pàrte que no está englobada en la clase).

     

        Public con As New ClaseConexion.XXX.cone

        'Variable de tipo de la clase ClaseConexion que hace referencia al "conexion" y "adaptador".

     

        Public conexion As New OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\BodegaSC.mdb")

        'El segundo adaptador no lo paso mediante una clase porque tan solo se usa para las búsquedas.

        'Public adaptadorvin2 As New OleDbDataAdapter("Select Cod_barras, Referencia, Nombre, Precio, Stock, Denominacion_origen, Tipo_vino, Calidad, Bodega, Observaciones from Producto", conexion)

        '    Public adaptador_ma As New OleDbDataAdapter("SELECT d.Actividad, d.Nombre, d.Telefono, m.Descripcion FROM Detalle AS d INNER JOIN Maestro AS m ON d.Actividad = m.Actividad", conexion)

        Public adaptadorvin2 As New OleDbDataAdapter("SELECT p.Referencia, p.Nombre, p.Precio, p.Stock, p.Denominacion_origen, p.Tipo_vino, p.bodega, p.Observaciones FROM Producto AS p INNER JOIN Producto AS pr WHERE pr.Cosecha = p.Cosecha", conexion)

        Private Sub b_iralmenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_iralmenu.Click

            f19.Show()

            Me .Hide()

        End Sub

     

        Private Sub p_vinos_bus_cos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase .Load

            con.adaptadorvin.MissingSchemaAction = MissingSchemaAction.AddWithKey

            con.adaptadorvin.Fill(midataset, "Producto")

            adaptadorvin2.Fill(midataset, "Producto")

            dg_cos_maestro.DataSource = midataset

            dg_cos_maestro.DataMember = "Producto"

            dg_cos_detalle.DataSource = midataset

            dg_cos_detalle.DataMember = "Producto"

     

            'Realizo las relaciones entre las dos tablas.

            midataset.Relations.Add("Orden_Cosecha", _

                midataset.Tables("Producto").Columns("Referencia"), _

                midataset.Tables("Producto").Columns("Referencia"))

     

            dg_cos_maestro.DataSource = midataset

            dg_cos_maestro.DataMember = "Producto"

     

     

            ' asignar al datagrid detalles la relación

            ' que acabamos de crear por cosecha

            dg_cos_detalle.DataSource = midataset

            dg_cos_detalle.DataMember = "Producto.Orden_Cosecha"

     

     

        End Sub

    End Class

    • Cambiado Enrique M. Montejo domingo, 22 de mayo de 2011 8:43 acceso a datos (De:Lenguaje VB.NET)
    lunes, 25 de mayo de 2009 14:03

Todas las respuestas

  • <!-- /* Font Definitions */ @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin-top:0cm; margin-right:0cm; margin-bottom:10.0pt; margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} .MsoPapDefault {mso-style-type:export-only; margin-bottom:10.0pt; line-height:115%;} @page Section1 {size:612.0pt 792.0pt; margin:70.85pt 3.0cm 70.85pt 3.0cm; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

    Hola. Actualmente me encuentro haciendo un proyecto  pero no consigo avanzar tras un rato y me está desconcertando el asunto ya…

     

    Mi duda es que obtenidos los datos se conforma de de dos datagrid , en un formulario especializado para una búsqueda.  Lo que pasa es que   quiero rellenar los datagrid con una misma tabla (La tabla se llama “Producto”) viéndolos diferentes.Desde la misma tabla lo que pretendo es en una tengo los datos referentes a las características de un almacen de vinos, con código = “Referencia”, pero lo que yo pretendo es que las tablas estén relacionadas por cosecha, y que en el primer datagrid (datagrid 1) se vean los datos de los vinos desee una vista normal por código. Mientras que en el segundo datagrid se vean todos los vinos referentes a la cosecha por ejemplo de 1975 cuando clique solo en uno del datagrid1 y aparezcan todos los de ese año en el datagrid 2.

    La pregunta sigue con parte de pregunta con el mismo titulo :
    "Llenar dos datagrid el primero datos integros de una tabla, el segundo con todas las repeticiones de un dato. (1)"
    Llenar dos datagrid el primero datos integros de una tabla, el segundo con todas las repeticiones de un dato. (2)
    ...
    lunes, 25 de mayo de 2009 14:01
  • <!-- /* Font Definitions */ @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin-top:0cm; margin-right:0cm; margin-bottom:10.0pt; margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing {mso-style-priority:1; mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} .MsoPapDefault {mso-style-type:export-only; margin-bottom:10.0pt; line-height:115%;} @page Section1 {size:612.0pt 792.0pt; margin:70.85pt 3.0cm 70.85pt 3.0cm; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

    Aquí tengo un par de ejemplo que ayer logré sacar para ir entrenando, en el que tan solo hay dos datagrid, en cada ejemplo. No hay ni botones ni labels, solo obtiene los datos y hace una relación

     

     

    Ejemplo 1 (Dos tablas en un datagrid):

    La tabla  y la captura del programa es esta.

    http://www.imaxenes.com/imagen/dos_tablas_en_un_datagrid1ov07wj.jpg.html

     

     

    Aquí leo dos tablas y en el segundo datagrid añado la descripción a parte de los datos de la tabla Detalle. La consulta que hay aquí no la hubiera sacado sin casi copiarla (prácticamente de este foro). Supongo que en mi problema con mi almacen de vino lo que me falla es la consulta.

     

     

    Imports System.Data

    Imports System.Data.OleDb

     

     

    Public Class Form1

        Inherits System.Windows.Forms.Form

    Public conexion As New OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\relatab.mdb")

        Public adaptador_de As New OleDbDataAdapter("Select * from Detalle", conexion)

        Public adaptador_ma As New OleDbDataAdapter("SELECT d.Actividad, d.Nombre, d.Telefono, m.Descripcion FROM Detalle AS d INNER JOIN Maestro AS m ON d.Actividad = m.Actividad", conexion)

        Public midataSet As New DataSet

     

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase .Load

            adaptador_ma.MissingSchemaAction = MissingSchemaAction.AddWithKey

            adaptador_ma.Fill(midataSet, "Maestro")

             adaptador_de.Fill(midataSet, "Detalle")

            DataGrid1.DataSource = midataSet

            DataGrid1.DataMember = "Maestro"

            DataGrid2.DataSource = midataSet

            DataGrid2.DataMember = "Detalle"

            midataSet.Relations.Add("Tabla_Total", _

                midataSet.Tables("Maestro").Columns("Actividad"), _

                midataSet.Tables("Detalle").Columns("Actividad"))

     

     

            ' asignar al datagrid maestro la tabla Customers

            DataGrid1.DataSource = midataSet

            DataGrid1.DataMember = "Maestro"

     

     

            ' asignar al datagrid detalles la relación

            ' que acabamos de crear por código

            DataGrid2.DataSource = midataSet

            DataGrid2.DataMember = "Maestro.Tabla_Total"

     

     

        End Sub

    End Class
    lunes, 25 de mayo de 2009 14:05
  • <!-- /* Font Definitions */ @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin-top:0cm; margin-right:0cm; margin-bottom:10.0pt; margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing {mso-style-priority:1; mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} .MsoPapDefault {mso-style-type:export-only; margin-bottom:10.0pt; line-height:115%;} @page Section1 {size:612.0pt 792.0pt; margin:70.85pt 3.0cm 70.85pt 3.0cm; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

     

    Ejemplo 2 (data grid relacionado con otro):

    La tabla  y la captura del programa es esta.

    http://www.imaxenes.com/imagen/data_grid_relacionado_con_otro1ga94ru.jpg.html

     

     

     

    Aquí muestro en el segfundo datagrid la información del empoleado como se mostraría en el datagrid1 peroa demás mostrando el código. Hay no casi consulta.

    mports System.Data

    Imports System.Data.OleDb

     

     

    Public Class Form1

        Inherits System.Windows.Forms.Form

        Public conexion As New OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\empleado.mdb")

        Public adaptador_per As New OleDbDataAdapter("Select * from tab_personal", conexion)

        Public adaptador_tra As New OleDbDataAdapter("Select * from tab_tab", conexion)

        Public midataSet As New DataSet

     

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase .Load

            adaptador_tra.Fill(midataSet, "tab_tab")

            adaptador_per.Fill(midataSet, "tab_personal")

            DataGrid1.DataSource = midataSet

            DataGrid1.DataMember = "tab_tab"

            DataGrid2.DataSource = midataSet

            DataGrid2.DataMember = "tab_personal"

            midataSet.Relations.Add("Tabla_Total", _

                midataSet.Tables("tab_tab").Columns("cod_emple"), _

                midataSet.Tables("tab_personal").Columns("cod_emple"))

     

     

            ' asignar al datagrid maestro la tabla Customers

            DataGrid1.DataSource = midataSet

            DataGrid1.DataMember = "tab_tab"

            ' asignar al segundo datagrid maestro la tabla Customers

            'DataGrid3.DataSource = midataSet

            'DataGrid3.DataMember = "tab_tab"

     

            ' asignar al datagrid detalles la relación

            ' que acabamos de crear por código

            DataGrid2.DataSource = midataSet

            DataGrid2.DataMember = "tab_tab.Tabla_Total"

            ''Asignar al datagrid maestro la tabla "tab_tab"

            'DataGrid1.DataSource = midataSet

            ''DataGrid3.DataMember = UCase(midataSet.Relations("Tabla_Total").ParentTable.TableName.ToString)

            'DataGrid1.DataMember = "tab_tab"

     

            ''Asignar al segundo datagrid los detalles de la relacion (todos los datos)

            'DataGrid2.DataSource = midataSet

            'DataGrid2.DataMember = "tab_personal.Tabla_Total"

     

        End Sub

    End Class

    lunes, 25 de mayo de 2009 14:06
  • hola,

    lo primero que te aconsejaria es que unifiques los post, vi que has creado 4 con el mismo tema, de esta forma es muy dificil de seguir el hilo del problema planteado.

    Tienes en la parte inferior de la ventana donde escribes en el foro la opcion de editar, puedes ir agregandole info a medida que lo necesites, o puedes ir agregando yu mismo respuestas que adiciones informacion, no era necesario crear cuatro hilos sobre el tema.

    Te aconsejario si puedes que elimines los otros y se los agregues a este.

    Ahora bien sobre tu consulta.

    Yo te aconsejaria que si quieres utilziar relaciones en los dataset no lo realices en forma dinamica, sino que hagas uso de DataSet Tipados.

    No se si los conoces, estos basicamente tienes un disigner en dodne puedes modelar tu entidad y sus relaciones, luego en el Fill() del dataadapter lo utilizas directamente.

    DataSets con establecimiento de tipos (ADO.NET)

    Cómo: Crear un conjunto de datos con tipo


    este link tiene algunas imageens que explican como creat un dataset tipado:

    Typed DataSets in .NET

    Custom DataBindable BusinessObjects and The Typed DataSet

    saludos
    Leandro Tuttini
    lunes, 25 de mayo de 2009 14:27