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.