Moin Community,
ich hab ein mittel schweres Problem mit meinen Datagrids und finde nirgends eine Lösung. Ansich wollte cih alles in die Tonne treten und neu machen, bekomm nun aber Druck aus der GL das das Programm fertig wrrden muß #UndankIstDerWeltenLohn
Zur Ausgangssituation:
Ich habe ein Form, das zur Laufzeit, anhand einer Technikerlliste, für jeden Techniker eine Liste mit seinen Aufträgen anzeigen soll.
Für jeden Techniker wird hierbei ein Usercotrol erstellt, das neben einigen anderen Steuerelementen primär ein Datagridview enthält.
Sowohl das Form als auch das Usercontrol enthalten die beiden geleichen Datasets, welche ich per DBEx im Form befülle und über Filter in den Usertcontrolls dann je nach Techniker anzeige.
Bis dato alles super
Mein Problem entsteht sobald ich in der letzten Spalte bei der Combobox Techniker den Wert ändere (z.B. vom 'mx' in 'mm') und die Zeile wechsle.
Im UC wird dann folgendes Ausgeführt
Das Event soll vom Form verarbeitet werden. Hier mal die Register für die DBEx, die Erzeugung der UserControls und das Event.
Leider kommt es hier sehr Oft zu folgendem Fehler:
Der Datensatz wird mir zwar dann korrekt im Datagridview das anderen Technikers angezeigt, aber die Fehlermedung wird endlos oft wiederholt (rein vom Gefühl für jede Zelle in jeder Zeile in jedem Datagridview ein mal)
Die Fehlermeldung bringt mir insofern nichts, als das ich nicht verstehe was VisualStudio von mir will.
Wenn ich es recht verstehe, hat es ein Problem damit, dass eine Combobox kein Value zu dem Wert 'NULL' findet. Wenn ich es richtig ausklabustert habe, kommt der Ursprung des Fehlers aus der Zelle des Datagrids das den Datensatz mal enthalten hat, nun aber aufrgrud des Filters nichtmehr hat. Jedenfalls erzeugt mir dieses Datagridview, wenn ich die Fehler lang genug bestätige, eine leere Zeile. Das es für eine Combobox schwer ist, einen Wert zu einer einer, für sie nicht merhr vorhandenen Zeile zu finden ist mir ja durchaus verständlich, aber ich begreife nicht warum sie es überhaupt versucht.
Ich habe schon alle Seiten die Googel zu diesem Fehler ausspuckt durchgeklickt, aber wirklich eine Lösung habe ich nicht gefunden. Ich hoffe inständig das ich irgendwo nur einen groben Schnitzer im Code hab oder irgendwass essentielles übersehe, ansonsten war meine Arbeit zwar lehrreich, aber für die Tonne.
PS: Bevor einer fragt, warum ich nach dem Db_serviceticket.Save noch ein Db_serviceticket.tbl_serviceticket.Fill mache. Es gibt insgesammt 3 Anwendungen, welche Änderungen an der Tabelle machen, und diese muß ich natürlich irgendwie auch in meinem Form abbilden.
ich hab ein mittel schweres Problem mit meinen Datagrids und finde nirgends eine Lösung. Ansich wollte cih alles in die Tonne treten und neu machen, bekomm nun aber Druck aus der GL das das Programm fertig wrrden muß #UndankIstDerWeltenLohn
Zur Ausgangssituation:
Ich habe ein Form, das zur Laufzeit, anhand einer Technikerlliste, für jeden Techniker eine Liste mit seinen Aufträgen anzeigen soll.
Für jeden Techniker wird hierbei ein Usercotrol erstellt, das neben einigen anderen Steuerelementen primär ein Datagridview enthält.
Sowohl das Form als auch das Usercontrol enthalten die beiden geleichen Datasets, welche ich per DBEx im Form befülle und über Filter in den Usertcontrolls dann je nach Techniker anzeige.
Bis dato alles super
Mein Problem entsteht sobald ich in der letzten Spalte bei der Combobox Techniker den Wert ändere (z.B. vom 'mx' in 'mm') und die Zeile wechsle.
Im UC wird dann folgendes Ausgeführt
Das Event soll vom Form verarbeitet werden. Hier mal die Register für die DBEx, die Erzeugung der UserControls und das Event.
VB.NET-Quellcode
- Private Sub BindDataset()
- Dim adpDispatching = New DatasetAdapter(
- MySql.Data.MySqlClient.MySqlClientFactory.Instance,
- My.Settings.db_dispatchingConnectionString,
- ConflictOption.OverwriteChanges)
- Db_serviceticket.Adapter(adpDispatching).Register(Me, True)
- Dim adpCommerz = New DatasetAdapter(
- MySql.Data.MySqlClient.MySqlClientFactory.Instance,
- My.Settings.commerzConnectionString,
- ConflictOption.OverwriteChanges)
- Db_commerz.Adapter(adpCommerz).Register(Me, True)
- Dim adpkis = New DatasetAdapter(
- MySql.Data.MySqlClient.MySqlClientFactory.Instance,
- My.Settings.kisConnectionString,
- ConflictOption.OverwriteChanges)
- Db_kis.Adapter(adpkis).Register(Me, True)
- End Sub
- Private Sub createTechnikerview(ByVal techniker As String)
- Dim tv As New Technikerview(techniker)
- tlpTechniker.Controls.Add(tv)
- tv.Dock = DockStyle.Fill
- AddHandler tv._aktualisieren, AddressOf safe
- AddHandler tv._close, AddressOf tvClose
- End Sub
- Private Sub safe(sender As Object, e As EventArgs)
- Db_serviceticket.Save(Me, True)
- Db_serviceticket.tbl_serviceticket.Fill("WHERE status <> 14 AND status <> 39 AND status <> 102 ORDER BY Datum DESC")
- End Sub
Leider kommt es hier sehr Oft zu folgendem Fehler:
Der Datensatz wird mir zwar dann korrekt im Datagridview das anderen Technikers angezeigt, aber die Fehlermedung wird endlos oft wiederholt (rein vom Gefühl für jede Zelle in jeder Zeile in jedem Datagridview ein mal)
Die Fehlermeldung bringt mir insofern nichts, als das ich nicht verstehe was VisualStudio von mir will.
Wenn ich es recht verstehe, hat es ein Problem damit, dass eine Combobox kein Value zu dem Wert 'NULL' findet. Wenn ich es richtig ausklabustert habe, kommt der Ursprung des Fehlers aus der Zelle des Datagrids das den Datensatz mal enthalten hat, nun aber aufrgrud des Filters nichtmehr hat. Jedenfalls erzeugt mir dieses Datagridview, wenn ich die Fehler lang genug bestätige, eine leere Zeile. Das es für eine Combobox schwer ist, einen Wert zu einer einer, für sie nicht merhr vorhandenen Zeile zu finden ist mir ja durchaus verständlich, aber ich begreife nicht warum sie es überhaupt versucht.
Ich habe schon alle Seiten die Googel zu diesem Fehler ausspuckt durchgeklickt, aber wirklich eine Lösung habe ich nicht gefunden. Ich hoffe inständig das ich irgendwo nur einen groben Schnitzer im Code hab oder irgendwass essentielles übersehe, ansonsten war meine Arbeit zwar lehrreich, aber für die Tonne.
PS: Bevor einer fragt, warum ich nach dem Db_serviceticket.Save noch ein Db_serviceticket.tbl_serviceticket.Fill mache. Es gibt insgesammt 3 Anwendungen, welche Änderungen an der Tabelle machen, und diese muß ich natürlich irgendwie auch in meinem Form abbilden.