Ciao a tutti, ho un problemino abbastanza ostico, essendo poi non un programmatore senior di vb.net faccio una fatica immane a trovare la soluzione.
Ho costruito a fatica tutti i passaggi precedenti e mi sono arenato sulla creazione del loop finale, per cui chiedo aiuto spiegando di cosa ho bisogno.

In un DB ho delle tabelle di configurazione che mi permettono di rendere parametrizzabile un'applicazione che sto costruendo.

La fase finale è quella di utilizzare l'ultima Form in cui devo aggiungere delle TabPages dal un TabControl, prendendo il nome dell'etichetta da un campo della tabella, creare tante TabPages quante le righe della tabella filtrata, in ultima tramite una procedura elencare i dati che devo inserire nella DataGridView che creo all'interno di ogni specifica TAB (bel casino, eh?).

Elenco di seguito le tabelle su cui mi appoggio:

U_TitoloForm U_ProcCol U_ProcDati
Dettaglio OP S2TRM_BRK11_C S2TRM_BRK11_D
Dettaglio Fasi S2TRM_BRK12_C S2TRM_BRK12_D
Dettaglio Righe S2TRM_BRK13_C S2TRM_BRK13_D

In pratica sono riuscito a creare i TAB con U_TitoloForm per ognuno, creo un DataGridView all'interno.
La difficoltà mi si presenta con le U_Procx, dove sono racchiuse delle procedure che esportano il nome della colonna e i dati.

Procedura per titoli colonne: execute S2TRM_BRK11_C

N. OP Cliente Dt Consegna

Procedura per inserimento dati: execute S2TRM_BRK11_D

1805879 C000002107 03-06-2018
1805880 C000002107 03-06-2018
1805881 C000002107 03-06-2018

Se utilizzo un DataGrid già esistente con poche righe di codice lo compilo subito, ma il difficile è creare dinamicamente i TABPages e poi inserire la Grid per ogni procedura, comunque il codice che ho inserito è (al netto delle stringa di connessione, altrimenti sapete le password che uso... )

codice:
Using Con As New SqlConnection(sConnection)            Con.Open()
            '   data la selezione del codice in Menu1 compila i TAB ad essa associati
            Using Com As New SqlCommand("Select U_TitoloForm From [@S2TRM_OPERAZIONID] WHERE Code = " & Menu1.Cmb_Selezione.SelectedValue, Con)
                Using RDR = Com.ExecuteReader()
                    If RDR.HasRows Then
                        Do While RDR.Read
                            ' CICLO CHE AGGIUNGE I TAB E LI RINOMINA DAL TITOLO FORM
                            Me.Tab_Container.TabPages.Add(RDR.Item("U_TitoloForm").ToString())




                            ' INSERISCE DATAGRIDVIEW PER I DATI DELLE TABELLE 
                            Dim dgv = New DataGridView
                            With dgv
                                .ColumnHeadersVisible = True
                                .RowHeadersVisible = False
                                .Width = 600
                                .Height = 800
                            End With
                            Me.Tab_Container.TabPages(0).Controls.Add(dgv)


                            ' INSERIMENTO DATI NEL DGV
                            Using Com1 As New SqlCommand("execute [dbo].[S2TRM_BRK11_D]", Con)
                                Using RDR1 = Com1.ExecuteReader()
                                    Dim dt As New DataTable
                                    dt.Load(RDR1)
                                    dgv.DataSource = dt
                                End Using


                            End Using


                            '   INTESTAZIONE COLONNE NEL DATAGRIDVIEW
                            Using Com2 As New SqlCommand("execute [dbo].[S2TRM_BRK11_C]", Con)
                                Using RDR2 = Com2.ExecuteReader()
                                    'If RDR2.HasRows Then
                                    ' Do While RDR2.Read
                                    Dim Colonne As Integer = RDR2.VisibleFieldCount
                                    For i = 0 To Colonne - 1
                                        dgv.Columns(i).HeaderCell.Value = RDR2.Item(i).ToString
                                    Next
                                    'Loop


                                    'End If


                                End Using
                            End Using


                        Loop
        RDR.Close()
                    End If




        End Using
            End Using




        Con.Close()
        SqlConnection.ClearPool(Con)


        End Using

So che il codice come l'ho scritto fa schifo, ma non riesco a sistemare le aperture e chiusura dei Reader... chi mi sa aiutare?


Vi pregoooo... è il mio primo progetto prova...

Grazie.