Hi,
die Frage ist wahrscheinlich blöd, aber ich komm net drauf:
Ich arbeite mit einem streng typisierten Dataset. Bisher läuft es so, dass ich es in meine Forms usw. einbinde und dort über die TableAdapters befülle. Sowohl über den Designer, als auch manchmal händisch. Nun habe ich aber auch diverse Helferlein-Funktionen, die auf das DataSet zugreifen und mir gewisse Werte aus den Daten berechnen. Da ich diese Funktionen für verschiedene Forms, Subs usw. benötige, habe ich sie in ein Modul gepackt. Auch bei diesen Funktionen bastel ich mir bisher eine Instanz meines Datasets und befülle es innerhalb der Funktionen. Etwa in dieser Art:
Soweit, so grün. Aber nu werden diese Funktionen z.T. über Schleifen mehrere Dutzend Male hintereinander aufgerufen. Und jedes Mal ziehen die TableAdapter die Daten ins DataSet. Ist perfomancemäßig natürlich übler Schwachsinn und funzt so träge, dasses zum Heulen ist.
Also überleg ich, ob ich das DataSet irgendwie inner Startprozedur einmalig befülle und dann gobal allen Nutzungen des Progs zur Verfügung stelle. Bei Datenänderungen muss so ein globales DataSet natürlich updatebar sein. Das würde ich in den zuständigen Bearbeitungs-Forms realisieren, wo auch die Validierung stattfindet, so dass an allen anderen Stellen sichergestellt sein sollte, dass das globale DataSet konsistente Daten enthält, die sich auch nicht in irgendwelchen Edit-Modi befinden.
Ich arbeite bisher nicht in VB mit globalen Objekten (jedenfalls nicht bewusst) und bin mir nicht sicher, wo und wie ich das ansiedeln sollte. In meiner frmMain_load? Kann ich da ein Dataset als Public deklarieren? Bitte seid mir nicht böse, wenn ich hier frage und das jetzt net einfach ausprobiere, ich will mir mein Projekt nicht schreddern. Hat jemand einen Tip, wie ich da vorgehen kann? Gerne auch SuFu- oder sonstiger Verweis. Hab bis itzo nichts Passendes gefunden.
Danke
Marsianer
die Frage ist wahrscheinlich blöd, aber ich komm net drauf:
Ich arbeite mit einem streng typisierten Dataset. Bisher läuft es so, dass ich es in meine Forms usw. einbinde und dort über die TableAdapters befülle. Sowohl über den Designer, als auch manchmal händisch. Nun habe ich aber auch diverse Helferlein-Funktionen, die auf das DataSet zugreifen und mir gewisse Werte aus den Daten berechnen. Da ich diese Funktionen für verschiedene Forms, Subs usw. benötige, habe ich sie in ein Modul gepackt. Auch bei diesen Funktionen bastel ich mir bisher eine Instanz meines Datasets und befülle es innerhalb der Funktionen. Etwa in dieser Art:
VB.NET-Quellcode
- Dim ds As dsFinanzKnecht = New dsFinanzKnecht
- Dim ta As dsFinanzKnechtTableAdapters.BuchungTableAdapter = New dsFinanzKnechtTableAdapters.BuchungTableAdapter
- Dim td As dsFinanzKnechtTableAdapters.OrderDauerhaftTableAdapter = New dsFinanzKnechtTableAdapters.OrderDauerhaftTableAdapter
- Dim te As dsFinanzKnechtTableAdapters.OrderEinmaligTableAdapter = New dsFinanzKnechtTableAdapters.OrderEinmaligTableAdapter
- ta.Fill(ds.Buchung)
- td.Fill(ds.OrderDauerhaft)
- te.Fill(ds.OrderEinmalig)
Soweit, so grün. Aber nu werden diese Funktionen z.T. über Schleifen mehrere Dutzend Male hintereinander aufgerufen. Und jedes Mal ziehen die TableAdapter die Daten ins DataSet. Ist perfomancemäßig natürlich übler Schwachsinn und funzt so träge, dasses zum Heulen ist.
Also überleg ich, ob ich das DataSet irgendwie inner Startprozedur einmalig befülle und dann gobal allen Nutzungen des Progs zur Verfügung stelle. Bei Datenänderungen muss so ein globales DataSet natürlich updatebar sein. Das würde ich in den zuständigen Bearbeitungs-Forms realisieren, wo auch die Validierung stattfindet, so dass an allen anderen Stellen sichergestellt sein sollte, dass das globale DataSet konsistente Daten enthält, die sich auch nicht in irgendwelchen Edit-Modi befinden.
Ich arbeite bisher nicht in VB mit globalen Objekten (jedenfalls nicht bewusst) und bin mir nicht sicher, wo und wie ich das ansiedeln sollte. In meiner frmMain_load? Kann ich da ein Dataset als Public deklarieren? Bitte seid mir nicht böse, wenn ich hier frage und das jetzt net einfach ausprobiere, ich will mir mein Projekt nicht schreddern. Hat jemand einen Tip, wie ich da vorgehen kann? Gerne auch SuFu- oder sonstiger Verweis. Hab bis itzo nichts Passendes gefunden.
Danke
Marsianer
Ich code nur 'just for fun'! Damit kann ich jeden Mist entschuldigen, den mein Interpreter verdauen muss