Problema visualizzazione su DataGridView di DataTable relazionati

giovedì 26 luglio 2007 - 17.05

SSUPERPIPPO Profilo | Guru

Ho un problema e non riesco a venirne a capo...

Ho creato 3 Datatable derivanti da 3 Tabelle del mio database

La prima tabella denominata "GruppiStampa", la seconda "DefGruppiStampa" e la terza "AnagraficaComponente"

Queste tabelle sono così relazionate:


677x168 35Kb


Ogni record della tabella GruppiStampa potrà avere più record della Tabella DefGruppiStampa; a sua volta, ogni record della tabella DefGruppiStampa potrà avere un solo record della tabella "AnagraficaComponente";

Io ho la necessità di visualizzare su due DataGridView rispettivamente, su una il contenuto della tabella GruppiStampa e su un'altra il contenuto di AnagraficaComponente filtrato in base relazione stabilita.

Ho quindi creato delle relazioni i DataTable in questo modo:

Private Sub CreaBinding()

' Crea le relazioni tra le tabelle GruppiStampa => DefGruppiStampa

Dim KeyParent(1) As DataColumn

KeyParent(0) = DbDbase.SqlDS.Tables("GruppiStampa").Columns("CdAzienda")
KeyParent(1) = DbDbase.SqlDS.Tables("GruppiStampa").Columns("CdID")

Dim KeyChild(1) As DataColumn

KeyChild(0) = DbDbase.SqlDS.Tables("DefGruppiStampa").Columns("CdAzienda")
KeyChild(1) = DbDbase.SqlDS.Tables("DefGruppiStampa").Columns("CdStampa")

DbDbase.SqlDS.Relations.Add("Definizione", KeyParent, KeyChild)

' Crea la relazione tra le tabelle DefGruppiStamp => AnagraficaComponenti

ReDim KeyParent(2)

KeyParent(0) = DbDbase.SqlDS.Tables("DefGruppiStampa").Columns("CdAzienda")
KeyParent(1) = DbDbase.SqlDS.Tables("DefGruppiStampa").Columns("CdFamiglia")
KeyParent(2) = DbDbase.SqlDS.Tables("DefGruppiStampa").Columns("CdComponente")

ReDim KeyChild(2)

KeyChild(0) = DbDbase.SqlDS.Tables("AnagraficaComponenti").Columns("CdAzienda")
KeyChild(1) = DbDbase.SqlDS.Tables("AnagraficaComponenti").Columns("CdFamiglia")
KeyChild(2) = DbDbase.SqlDS.Tables("AnagraficaComponenti").Columns("CdComponente")

DbDbase.SqlDS.Relations.Add("Componenti", KeyParent, KeyChild, False) <== Ho provato a impostare True ma mi dà errore

' Effettua il binding

Me.GrdStampe.DataSource = DbDbase.SqlDS
Me.GrdStampe.DataMember = "GruppiStampa"

Me.GrdComponentiSel.DataSource = DbDbase.SqlDS
Me.GrdComponentiSel.DataMember = "GruppiStampa.Definizione.Componenti"

End sub

Come vedete ho effettuato il binding del DataGridView denomintao GrdStampe con il DataTable "GruppiStampa e del secondo DataGridView denominato GrdComponentiSel con "GruppiStampa.Definizione.Componenti" passando per la relazione prima creata.

Sembrerebbe funzionare tutto, non mi dà nessun errore ma mi restituisce solamente un record (il primo) nel secondo DataGridView nonostante io sia certo che di record ce ne sono più di uno...

Qualcuno ha la pazienza di aiutarmi a capirci qualcosa?

Ho provato davvero l'impossibile, credo sia un problema di relazioni ma non ne vengo a capo.

Aiutoooo!!!

Grazie

Alessandro
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5