none
Relaciones en DataSet? RRS feed

  • Pregunta

  • Hola

    Estoy intentando realizar una relación de 2 datatable para Obtener un tercero pero me arroja el error: 

    Las columnas primarias y las columnas secundarias no tienen columnas que coincidan.

    Porque podria ser este error. El Error se produce al Ejecutar la funcion de Createdataset

     Dim column As DataColumn
        Dim row2 As DataRow
        Dim view As DataView
        Dim table As DataTable = New DataTable()
    
        Dim DtEstudiantes As DataTable
        Dim DtAsistencia As DataTable
    
    
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Dim fechainicioCurso As New DateTime(2012, 3, 28)
            Dim fechaFinCurso As New DateTime(2012, 6, 14)
    
            CargarEstudiantes()
            CargarAsistencia()
            Dim dias As TimeSpan = fechaFinCurso.Subtract(fechainicioCurso)
            Dim dateIncremento As DateTime = fechainicioCurso
    
            ' DataGridView1.DataSource = DtEstudiantes
            table.Columns.Add("Id")
            table.TableName = ("Table")
    
            Dim Columna As String
    
            For i = 1 To dias.Days
    
                table.Columns.Add(dateIncremento.ToShortDateString())
                dateIncremento = dateIncremento.AddDays(1)
            Next
    
            For j = 0 To DtEstudiantes.Rows.Count - 1
    
                For x = 0 To DtAsistencia.Rows.Count - 1
    
                    If DtAsistencia.Rows(x)("IdInscripcion") = DtEstudiantes.Rows(j)("IdInscripciones") Then
                        row2 = table.NewRow
                        row2(DtAsistencia.Rows(x)("Fecha")) = "X"
                        row2("Id") = DtEstudiantes.Rows(j)("IdInscripciones")
                        table.Rows.Add(row2)
                    End If
    
                Next
    
            Next
    
            ' Creamos el objeto DataSet
            '
            Dim ds As DataSet = CreateDataSet()
    
            ' Añadimos la columna calculada al objeto DataTable de Pedidos
            '
            '  ds.Tables("Table").Columns.Add( _
            '     "Id", GetType(String), "Parent(FK_Clientes_Pedidos).Id")
    
            ' Enlazamos el control DataGridView a la tabla de Pedidos
            '
            'Me.DataGridView1.DataSource = ds.Tables("ClientesPedidos")
    
            'DataGridView1.DataSource = table
            'Exit Sub
          
    
        End Sub
    
        Private Function CreateDataSet() As DataSet
    
            Try
                
                ' Creamos un nuevo objeto DataSet
                '
                Dim ds As New DataSet("Asistencia")
    
                ' Clonamos el objeto DataTable de Table.
                Dim dt As DataTable = Me.table.Clone()
    
                ' Importamos los registros
                For Each row As DataRow In Me.table.Rows
                    dt.ImportRow(row)
                Next
    
                ' Añadimos al DataSet el objeto DataTable de los clientes
                ds.Tables.Add(dt)
    
                ' Clonamos el objeto DataTable de Pedidos.
                dt = Me.DtEstudiantes.Clone()
    
                ' Importamos los registros
                For Each row As DataRow In Me.DtEstudiantes.Rows
                    dt.ImportRow(row)
                Next
    
                ' Añadimos el objeto DataTable de los pedidos
                ds.Tables.Add(dt)
    
                ' Obtenemos el campo principal de la tabla Clientes
                Dim parentColumn As DataColumn = ds.Tables("Table").Columns("Id")
    
                ' Obtenemos el campo relacionado de la tabla Pedidos
                Dim childColumn As DataColumn = ds.Tables("tbl_Miembros").Columns("IdInscripciones")
    
                ' Creamos la relación
                Dim rel As DataRelation = New DataRelation("FK_Asistencia", parentColumn, childColumn)
    
                ' Añadimos la relación al objeto DataSet
                ds.Relations.Add(rel)
    
                ' Devolvemos el objeto DataSet
                DataGridView1.DataSource = ds
    
                'Return ds
    
            Catch ex As Exception
                ' Devolvemos la excepción
                Throw
    
            End Try
    
        End Function



    Jruiz

    • Cambiado Enrique M. Montejo viernes, 26 de diciembre de 2014 8:02 Pregunta relacionada con objetos de acceso a datos.
    viernes, 29 de junio de 2012 20:16

Todas las respuestas

  • hola, en que linea te sale el error? a mi parecer puede ser en :

    Dim parentColumn As DataColumn = ds.Tables("Table").Columns("Id"

    en lugar de "table" deberia ser asistencia, ya que estas obteniendo resultados de ahi

    otra cosa, a mi parecer debe tener un campo en comun para formar una tercera, podrias explicar como quieres formar la tercera tabla


    Giancarlo

    viernes, 29 de junio de 2012 22:16
  • El Tipo de dato, aunque los datos se relacionen si el tipo de dato no coincide manda ese error.
    domingo, 21 de diciembre de 2014 4:51