| |
VB.NET - Ein- und UmsteigerNutzen eines Globalen Datasets? | | | Autor: Soenke1492 | Datum: 09.11.12 23:47 |
| Guten Abend zusammen,
ich habe eine kleine Anwendung in der unter anderem auf eine Access-Datenbank zugegriffen wird.
Aus verschiedenen Formularen und aus verschiedenen Threads greife ich immer wieder auf diese Datenbank zu, indem ich über neu, im Code erstellte Datasets die Daten aus der DB lade.
Aus Peformance-Gründen frage ich mich jetzt, ob es nicht Sinn machen würde bzw. möglich ist nur ein Dataset zu haben, auf welches ich dann von allen Threads und allen Formularen zugreifen kann?
Dann würde ich mir das mehrmalige Laden gleicher Daten sparen und die Daten für bestimmte Formulare wären bereits vorhanden und die Formulare würden deutlich schneller laden...
Gibt es eine Möglichkeit das Dataset Global zu deklarieren?
Wichtig ist wiegesagt, dass es auch aus verschiedenen Threads aufgegriffen werden kann.
Vielen Dank für Eure Unterstützung!
Sönke | |
Re: Nutzen eines Globalen Datasets? | | | Autor: Manfred X | Datum: 10.11.12 07:44 |
| Hallo!
Beim Laden von Daten in ein Dataset kommt es auf die richtige Auswahl
der Datensätze an. So viel wie nötig, aber so wenig wie möglich!
Ob Du mit EINEM Dataset effektiv arbeiten kannst, hängt davon ab, wie viele
Daten zu lesen sind, damit alle Threads beim Zugriff die für die Bearbeitung
erforderlichen Sätze darin vorfinden.
Auch ein Dataset ist (natürlich) ein Objekt, also können beliebig viele
Referenzen auf dieses Objekts erstellt und für den Datenzugriff verwendet
werden. Die Weitergabe von Referenzen an die Instanzen anderer Klassen kann
z.B. durch das Einrichten von Properties erfolgen (die vom Hauptformular
verwendet werden).
Sollten verschiedene Threads (lesend und) schreibend auf einen gemeinsam
genutzten Datenbestand zugreifen, muss eine sinnvolle Koordination eingerichtet
werden (Reihenfolge der Zugriffe, Locks der Datenobjekte).
MfG
Manfred | |
Re: Nutzen eines Globalen Datasets? | | | Autor: paul123 | Datum: 10.11.12 08:06 |
| Hallo,
also ich hab das mal so gelernt, das ein Dataset ein 'Behälter' für Datatables ist. Also erschließt es sich mir nicht, weshalb man in einem Programm mit mehreren Datasets arbeiten soll | |
Re: Nutzen eines Globalen Datasets? | | | Autor: Manfred X | Datum: 10.11.12 08:14 |
| Hallo!
Das kann man so allgemein eigentlich nicht sagen.
Wenn in einer Anwendung mehrere Threads parallel laufen, die
jeweils unterschiedliche Datensätze aus der DB benötigen,
kann es bei hohem Datenvolumen sinnvoll sein,
in jedem Thread die jeweils benötigten Sätze in die Tables eines
"threadspezifischen" Datasets zu laden und dieses Dataset sofort
nach der Bearbeitung wieder frei zu geben.
MfG
Manfred | |
Re: Nutzen eines Globalen Datasets? | | | Autor: paul123 | Datum: 10.11.12 09:21 |
| ok, Danke für den Tipp Manfred X. Ich hätte da mal ne Frage: Ich hab berufsbedingt in den letzten Jahren (ab 2008) wenig Zeit gehabt, mich weiter mit VB.Net zu befassen. Hättest du Interesse daran, mir zu helfen mein altes Projekt (unter VB 2003) zu aktualisieren? Ich würde mich auch erkenntlich zeigen. Falls ja:
SteffenEckhardt@gmx.de;
Projektbeschreibung würde ich per PM o.email schicken. Ist kein großes Ding, Kundendaten erfssen u.verwalten.
Natürlich hab ich jetzt schon mittels z.B.Galileo Openbooks versucht, es selbst zu schaffen. Hab aber ein Zeitproblem durch meinen neuen Job.
Gruß Steffen! | |
Re: Nutzen eines Globalen Datasets? | | | Autor: Soenke1492 | Datum: 10.11.12 10:15 |
| Hallo,
Vielen Dank erstmal für Eure Antworten.
Wie beschrieben wollte ich ursprünglich jeglichen Konflikten aus dem Weg gehen und habe deshalb mehrere kurzlebige Datasets verwendet.
Aber wie und wo deklariere ich denn im Code ein "globales" Dataset, sodass ich jederzeit von überall drauf zugreifen kann?
Gibt es dort Session-Variablen oder ähnliches? Oder habe ich aus anderen Modulen die Möglichkeit auf eine globale Variable das Main-Forms zuzugreifen?
Viele Grüße,
Sönke | |
Re: Nutzen eines Globalen Datasets? | | | Autor: Manfred X | Datum: 10.11.12 10:41 |
| Vergiß das mit dem "global"
Du erstellst das Dataset im Hauptformular (Private).
Dort werden auch die Instanzen der untergeordneten Formulare erstellt.
In den untergeordneten Formularen richtest Du eine
Eigenschaft eines geeigneten Typs (Dataset, Datatable, ...)
für die Übergabe der Referenz ein.
Du übergibst beim Erstellen/Anzeigen des Formulars aus dem
Hauptformular heraus die Referenz auf dieses Dataset (oder Table o.ä.)
durch Zuweisung auf diese Property.
In der Property (Set) rufst Du eine Routine auf, die die
Datenbindung der Controls an die Membervariable der Property aktualisiert.
Sei "Subform_Instance" der Name des untergeordneten Formulars,
"Data" der Name der dort eingerichteten Eigenschaft und "myDataset"
das im Hauptformular erstellte und mit Daten gefüllte Set:
Subform_Instance.Data = myDataset
SubForm_Instance.Show | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevZIP40 Pro DLL
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|