View Full Version : [VB2010] - Associare a variabile un DataGridView
lucausa75
26-11-2010, 23:26
Salve ragazzi,
a livello di form ho dichiarato queste variabili:
Dim MyDB As String = "Biblio.mdb"
Dim MyPW As String = ""
Dim MyTB As String = "Elenco Libri"
Successivamente ho creato anche una SUB tramite la quale mi connetto ad un database:
Private Sub EseguiConnessione(ByVal DB As String, ByVal PW As String, ByVal TB As String, ByVal DGV As DataGridView)
Quì in basso trovate come la richiamo a livello di programma:
EseguiConnessione(MyDB, MyPW, MyTB, dgvArchivio)
Voglio capire come dichiarare la variabile DataGridView per associarla alla griglia chiamata dgvArchivio e realizzare qualcosa del tipo:
EseguiConnessione(MyDB, MyPW, MyTB, MyDGV) e quindi dichiarare MyDGV ad esempio così:
Dim MyDGV As DataGridView = dgvArchivio ma non mi funziona...:muro:
Alle volte rimpiago il buon VB6 :D
Ma come VARIABILE ?! :doh: :D
Con tutto quello che ho speso per farti studiare... :rolleyes: :D
Il DGV è un OGGETTO.
Se vai ad aprire il file ".Designer.vb" di una Form, che contiene tutto il codice generato da VS su operazioni eseguite in design, vedrai che :
Private Sub InitializeComponent()
...
Me.DGV = New System.Windows.Forms.DataGridView
...
Quindi il DGV aggiunto in design è già istanziato, non c'è nessun bisogno di creare un nuovo oggetto che è uguale-a-DGV...
E pertanto lo puoi passare direttamente in argomento ai Metodi che vuoi...
Ma ci vuole tempo e pazienza : il modo di pensare alla-VB6 ti perseguiterà ancora per un bel pezzo... ;)
lucausa75
27-11-2010, 09:56
Ma come VARIABILE ?! :doh: :D
Con tutto quello che ho speso per farti studiare... :rolleyes: :D
Il DGV è un OGGETTO.
Se vai ad aprire il file ".Designer.vb" di una Form, che contiene tutto il codice generato da VS su operazioni eseguite in design, vedrai che :
Private Sub InitializeComponent()
...
Me.DGV = New System.Windows.Forms.DataGridView
...
Quindi il DGV aggiunto in design è già istanziato, non c'è nessun bisogno di creare un nuovo oggetto che è uguale-a-DGV...
E pertanto lo puoi passare direttamente in argomento ai Metodi che vuoi...
Ma ci vuole tempo e pazienza : il modo di pensare alla-VB6 ti perseguiterà ancora per un bel pezzo... ;)
...variabile nel senso che in un progetto DGV si può chiamare dgvArchivio e in un altro dgvLista...
Quindi se uso la mia sub
EseguiConnessione(MyDB, MyPW, MyTB, XX)
nel progetto A dovrò dire a EseguiConnessione di inserire i dati dentro dgvArchivio (XX sarà dgvArchivio) mentre se la uso nel progetto B dovrò dire di mettere i dati dentro dgvLista (XX sarà dgvArchivio)...
Discorso tortuoso? :D
Grazie Marco... ;)
Quindi se uso la mia sub
EseguiConnessione(MyDB, MyPW, MyTB, XX)
nel progetto A dovrò dire a EseguiConnessione di inserire i dati dentro dgvArchivio (XX sarà dgvArchivio) mentre se la uso nel progetto B dovrò dire di mettere i dati dentro dgvLista (XX sarà dgvArchivio)...
Discorso tortuoso? :D
Grazie Marco... ;)
No, va tutto bene... :)
lucausa75
27-11-2010, 12:01
No, va tutto bene... :)
...però avendo questa sub EseguiConnessione(MyDB, MyPW, MyTB, XX) e definendola così EseguiConnessione(MyDB, MyPW, MyTB, dgvArchivio) ricevo un bell'errore :confused:
Come ho fatto per queste variabili
Dim MyDB As String = "Biblio.mdb"
Dim MyPW As String = ""
Dim MyTB As String = "Elenco Libri"
pensavo ci fosse una cosa simile per la DatGridView per evitare di andare a scivere ogni volta ed n volte il nome della griglia.
Volevo scriverlo una sola volta e a monte del form...
Anzitutto se stai scrivendo un Metodo ( in VB.NET le Sub e le Function sono METODI di una classe ), quella firma è da evitare :
Private Sub popolaDGV(ByVal MyDB As String, ByVal MyPW As String, ByVal MyTB As String, ByVal dgv As DataGridView)
In secondo luogo, se poi vuoi anche USARLO, quel metodo, è ovvio che gli devi passare il nome dell'oggetto dgv :
Private Sub popolaDGV(ByVal MyDB As String, ByVal MyPW As String, ByVal MyTB As String, ByVal dgv As DataGridView)
Dim cnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & MyDB & ";Jet OLEDB:Database Password=" & MyPW & ";"
Dim sqlSelect As String = "SELECT * FROM " & MyTB
Dim conn As New OleDb.OleDbConnection(cnString)
Dim DAdptr As New OleDb.OleDbDataAdapter(sqlSelect, conn)
Dim Dtbl As New DataTable
DAdptr.Fill(Dtbl)
dgv.DataSource = Dtbl
End Sub
E ad esempio la utilizzo con :
Private Sub cmd_popola_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_popola.Click
popolaDGV(percorso & nomeDB, "", "nomeTabella", DataGridView1)
End Sub
Nessun errore.
Non capisco dove stia il problema.
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.