Hallo zusammen,
vor ca. 5 Jahren habe ich mit VB.Net angefangen und auch ein Fernstudium erfolgreich abgeschlossen. Dennoch habe ich bis heute mit Access VBA gearbeitet. Nun bin ich aber auf VB.Net umgeschwenkt und erstelle aktuell mein erstes kleines Projekt "FlatTicker".
Zur Verfügung steht mir auf Arbeit VB.Net 2005 Prof. Englisch.
Ich habe aktuell eine Access DBdatei mit u.a. zwei Tabellen:
tbl_gruppe & tbl_platz
Die datenbankdatei binde ich im VB Code ein
Desweiteren habe ich unter anderem zwei Forms.
Auf diesen beiden Formen sind jeweils ein ungebundenes Datagridview welches wiefolgt gefüllt wird.
Das gleiche dann natürlich auch für die Tabelle Platz.
Wenn ich nun zur Laufzeit als erstes die Form Platz aufrufe, zeigt er mir alles normal an.
Wenn ich dann die Form schließe und die Form Gruppe öffne, sind die Spalten um eins nach rechts verschoben, die erste Spalte ist leer.
Wenn ich das wiederum schließe und den Platz öffne, ist alles wieder o.k., bei der Platz Form.
Schließe ich komplett alles und starte wieder neu, mach diese anderes herum, ist genau das zweite wieder verschoben.
D.h. die erste Form zeigt er immer richtig an, sobald ich die zweite Form das Grid lade ist alles um eins verschoben.
Hier im Forum habe ich aus 2006 mal ein Thread gesehen, bei dem das ähnliche Phänomen auftratt. Es hies man sollte .reset durchführen, dann funktioniert es. Sobald ich dies aber mache ist und bleibt die Form leer?
Kann mir jemand helfen?
Nachtrag: beim ersten öffnen sind die Daten noch da, wenn ich zur Laufzeit die gleiche Form schließe und neu öffne oder die Form schließe und die andere Form öffne keine Daten vorhanden bei dt.reset()
Nachtrag2: es liegt definitiv an der variable dt !
Aber wie gesagt mit reset, ist und bleibt alles leer, nach dem ersten aufruf. Clear reicht auch nicht?
Hatte mal die Variable als dt1 deklariert, da funktioniert es dann, wenn man es so trennt ;-(
Aber ich müsste doch auch eine Variable für beide Grids verwenden können?
LG Marja
vor ca. 5 Jahren habe ich mit VB.Net angefangen und auch ein Fernstudium erfolgreich abgeschlossen. Dennoch habe ich bis heute mit Access VBA gearbeitet. Nun bin ich aber auf VB.Net umgeschwenkt und erstelle aktuell mein erstes kleines Projekt "FlatTicker".
Zur Verfügung steht mir auf Arbeit VB.Net 2005 Prof. Englisch.
Ich habe aktuell eine Access DBdatei mit u.a. zwei Tabellen:
tbl_gruppe & tbl_platz
Die datenbankdatei binde ich im VB Code ein
Code:
Module AccessDB Public con As New OleDb.OleDbConnection Public cmd As New OleDb.OleDbCommand Public reader As OleDb.OleDbDataReader Public anzahl As Integer Public ds As New DataSet Public dt As New DataTable Public da As OleDb.OleDbDataAdapter Public bs As New BindingSource Public Sub Provider() con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=f:\test.mdb;" cmd.Connection = con End Sub End Module
Auf diesen beiden Formen sind jeweils ein ungebundenes Datagridview welches wiefolgt gefüllt wird.
Code:
Private Sub DGV_Gruppe_List(ByVal DGV As DataGridView) dt.Clear() Provider() ds.Tables.Add(New DataTable) da = New OleDb.OleDbDataAdapter("select gruppen_id, gruppe from tbl_gruppe", con) 'Hier ist das wesentliche. Mit dem * sagen wir dem Programm, das wir alle Spalten der Tabelle laden möchte. Tabelle muss man eben durch den richtigen Tabellennamen ersetzen. da.Fill(dt) Dim cb As New OleDb.OleDbCommandBuilder(da) bs.DataSource = dt DGV.DataBindings.Clear() DGV.DataSource = Nothing DGV.DataSource = bs 'Spaltenbreite DGV.Columns(0).Width = 0 DGV.Columns(1).Width = 200 DGV.Columns("gruppen_id").Visible = False 'erste Spalte ausblenden End Sub
Code:
'Formular laden Private Sub Gruppe_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load DGV_Gruppe_List(dgv_GruppeForm) 'DataGridView laden dgv_GruppeForm.ClearSelection() 'DataGridView deselektieren Me.txtGruppe.Text = "" : Me.txtID.Text = "" End Sub
Code:
Private Sub DGV_Platz_List(ByVal DGV As DataGridView) dt.Clear() Provider() 'ds.Tables.Add(New DataTable) da = New OleDb.OleDbDataAdapter("select platz_id, pcname, pczusatz from tbl_platz", con) 'Hier ist das wesentliche. Mit dem * sagen wir dem Programm, das wir alle Spalten der Tabelle laden möchte. Tabelle muss man eben durch den richtigen Tabellennamen ersetzen. da.Fill(dt) Dim cb As New OleDb.OleDbCommandBuilder(da) bs.DataSource = dt DGV.DataBindings.Clear() DGV.DataSource = Nothing DGV.DataSource = bs 'Spaltenbreite DGV.Columns(0).Width = 0 DGV.Columns(1).Width = 75 DGV.Columns(2).Width = 150 DGV.Columns("platz_id").Visible = False 'erste Spalte ausblenden End Sub
Code:
Private Sub Platz_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load DGV_Platz_List(dgv_PlatzForm) 'DataGridView laden dgv_PlatzForm.ClearSelection() 'DataGridView deselektieren Me.txtPlatz.Text = System.Environment.MachineName Me.txtZusatz.Text = "" : Me.txtID.Text = "" End Sub
Wenn ich dann die Form schließe und die Form Gruppe öffne, sind die Spalten um eins nach rechts verschoben, die erste Spalte ist leer.
Wenn ich das wiederum schließe und den Platz öffne, ist alles wieder o.k., bei der Platz Form.
Schließe ich komplett alles und starte wieder neu, mach diese anderes herum, ist genau das zweite wieder verschoben.
D.h. die erste Form zeigt er immer richtig an, sobald ich die zweite Form das Grid lade ist alles um eins verschoben.
Hier im Forum habe ich aus 2006 mal ein Thread gesehen, bei dem das ähnliche Phänomen auftratt. Es hies man sollte .reset durchführen, dann funktioniert es. Sobald ich dies aber mache ist und bleibt die Form leer?
Kann mir jemand helfen?
Nachtrag: beim ersten öffnen sind die Daten noch da, wenn ich zur Laufzeit die gleiche Form schließe und neu öffne oder die Form schließe und die andere Form öffne keine Daten vorhanden bei dt.reset()
Nachtrag2: es liegt definitiv an der variable dt !
Aber wie gesagt mit reset, ist und bleibt alles leer, nach dem ersten aufruf. Clear reicht auch nicht?
Hatte mal die Variable als dt1 deklariert, da funktioniert es dann, wenn man es so trennt ;-(
Aber ich müsste doch auch eine Variable für beide Grids verwenden können?
LG Marja
Comment