Ho questo codice, che mette in relazione uno(uffici) a molti (legali) due tabelle in cui non tutti i padri hanno dei figli.
Il risultato è questo : System.ArgumentException: 'Impossibile attivare questo vincolo. Non tutti i valori hanno valori padre corrispondenti.
Ho effettuato delle prove : ho costruito due tabelle in cui ad ogni padre corrispondono uno o più figli. Funziona.
Ho messo -tramite wizard- in relazione due tabelle Access in cui non tutti i padri hanno dei figli. Funziona.
Che cosa c'è di errato nelle mie righe?
Grazie per l'aiuto.
Imports System.Data.OleDb
Public Class Relazioni_dt
Dim cnn As New OleDbConnection(My.Settings.GestioneUfficiConnectionString)
Dim da_uffici As New OleDbDataAdapter("Select cu,comune,via ,cap,pr from uffici where sg='UP' order by comune", cnn)
Dim da_legali As New OleDbDataAdapter("Select cu,ragsoc1,indirizzo,comune,prov,cap from legali order by ragsoc1", cnn)
Dim dt_uffici As New DataTable("uffici")
Dim dt_legali As New DataTable("legali")
Dim ds As New DataSet("MyDataset")
Dim bs_uffici As New BindingSource
Dim bs_legali As New BindingSource
Private Sub Relazioni_dt_Load(sender As Object, e As EventArgs) Handles MyBase.Load
da_uffici.Fill(ds, "uffici")
da_legali.Fill(ds, "legali")
dt_uffici = ds.Tables(0)
dt_legali = ds.Tables(1)
dgv_Uffici.DataSource = dt_uffici
dgv_legali.DataSource = dt_legali
dt_uffici.PrimaryKey = New DataColumn() {dt_uffici.Columns("CU")}
Dim padre As DataColumn = ds.Tables("uffici").Columns("CU")
Dim figlio As DataColumn = ds.Tables("legali").Columns("CU")
Dim relazioneUffici_legali As DataRelation
relazioneUffici_legali = New DataRelation("Relazione", padre, figlio)
ds.Relations.Add(relazioneUffici_legali)
GetData()
End Sub
Private Sub GetData()
Try
bs_uffici.DataSource = ds
bs_uffici.DataMember = "Uffici"
bs_legali.DataSource = bs_uffici
bs_legali.DataMember = "Relazione"
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class