Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Daten im Hintergrund nachladen
zurück: Problem mit SUM() aus zwei Tabellen weiter: Anmeldungen aus dem SQL-Server als Sicht / View? Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
stefaktiv
Im Profil kannst Du frei den Rang ändern


Verfasst am:
11. Sep 2013, 23:09
Rufname:

Daten im Hintergrund nachladen - Daten im Hintergrund nachladen

Nach oben
       Version: Office 2013

Hallo,

kurz zur Umgebung meines Problemszenarios: ich habe bei einem Jugendverband einen kleinen Server in einem Intranet laufen, auf dem der SQL Server Express 2012 installiert ist. Im Intranet greifen mehrere Rechner auf den SQL-Server zu. Frontend ist hierbei Access. Zudem erfolgt auch ein Zugriff von ehrenamtlichen Mitarbeitern über VPN (Fritz!Fernzugang). Das Büro mit dem Server selbst ist recht flott ans Internet angebunden (VDSL 50) - einzelne Mitarbeiter aber nicht zwangsläufig.

Die Datenbank stellt unter anderem eine Personenverwaltung zur Verfügung. Zu jeder Person kann eine beliebige Anzahl an Adressen, Emailadressen, Konten, Rufnummern etc. erfasst werden. Die unterschiedlichen Datentypen sind jeweils in getrennten Tabellen gespeichert, also eine für Adressen, eine für Emailadressen etc.

Die Verknüpfung erfolgt wiederum über zwischengeschaltete Tabellen ("Person-Adresse", "Person-Emailadresse", etc.). Somit ist jede Adresse nur einmal vorhanden, kann aber mit beliebig vielen Personen verbunden sein.

Das Personenmenü ist in Form von Reitern aufgebaut - diese enthalten z.B. "Adressen", "Emailadressen" etc.

Bisher war das Access-Frontend mit festen Tabellenverknüpfungen mittels DAO an den SQL-Server angebunden. Das hatte den Vorteil, dass man die Formulare direkt auf den Tabellen aufbauen konnte. Um die Sache etwas performanter zu machen, habe ich alle Abfragen in Form von Sichten auf dem Server umgesetzt und diese als Tabellenverknüpfungen importiert. Es werden also nur noch die fertig berechneten Views abgerufen.

Trotzdem dauerte der Aufruf des Personenmenüs über das Internet / VPN sehr lange - obwohl eigentlich nicht unendlich viel Daten übertragen werden müssen. Hintergrund ist wohl, dass die Unterformulare in den einzelnen Reitern des Hauptformulars jeweils mit der ID der Person verbunden sind und dadurch das laden des Formulars stark verzögert wurde.

Hier habe ich mich auf die Suche nach einer schnelleren Lösung gemacht und letztlich alles in Form von Stored Procedures auf dem Server umgeschrieben. Diesen liefere ich mit ADO die ID der aufgerufenen Person und erhalte dann einen Recordset zurück, den ich an das Formular übergebe. Bei den Unterformularen habe ich es jetzt genauso gemacht.

Subjektiv geht es jetzt deutlich schneller - aber noch nicht so schnell, wie ich es mir gewünscht habe. Der nächste Schritt war jetzt nur noch die Person aufzurufen. Die Unterformulare werden zuerst nicht verknüpft, sondern erst dann, wenn sie zum ersten Mal angeklickt werden.

Das hat insbesondere den Vorteil, dass z.B. bei ausgeblendeten Reiter (je nach Profil der Person kann das der Fall sein) keine Daten übertragen werden. Das Personenmenü ist jetzt recht flott da.

Allerdings habe ich das Problem nach hinten verschoben - klickt man auf einen Reiter (z.B. "E-Mailadressen"), dann ergibt sich beim ersten Mal eine kurze Verzögerung.

Meine Frage wäre jetzt, ob es irgendeine Möglichkeit gibt, das Formular wie derzeit umgesetzt ohne Zusatzdaten zu laden (also nur die Person) - dann aber gleich im Hintergrund alle Zusatzdaten zu laden, ohne dass dadurch der Benutzer blockiert wird? Während er also noch die Grunddaten liest oder bearbeitet, werden Schritt für Schritt die E-Mailadressen, Rufnummern etc. nachgeladen?

Einzige Voraussetzung: klickt der Nutzer auf eine Registerkarte, dann sollte diese immer noch sofort geladen werden...

Keine Ahnung ob mein Anliegen verständlich ist?

Grüße

Stefan
Bitsqueezer
Office-VBA-Programmierer


Verfasst am:
12. Sep 2013, 16:59
Rufname:


AW: Daten im Hintergrund nachladen - AW: Daten im Hintergrund nachladen

Nach oben
       Version: Office 2013

Hallo,

Access ist nur sehr bedingt multitaskingfähig. Was Du möchtest, erfordert schon einiges an Handarbeit. Du könntest beispielsweise asnychrone ADO-Recordsets verwenden, die ihren "Fertig"-Status per Event melden. Diese Event-Subs können dann die geladenen Recordsets an etwa eine Combobox oder ein Formular binden.

Aber: Die Geschwindigkeit wird dadurch kaum besser werden, denn wenn andere Daten parallel im Hintergrund geladen werden, werden die Daten, die Du eigentlich sehen möchtest, ja dadurch nicht schneller geladen. Heißt: Du mußt vielleicht weniger lang warten, wenn Du auf ein bereits geladenes Recordset-Control/Form klickst, aber dafür brauchst Du länger, bis Du die eigentliche Seite zu sehen bekommst.
Access ist außerdem für solche Parallel-Arbeiten nicht unbedingt vorbereitet, Du wirst also eine schwere Zeit haben, um mit asynchronen Recordsets zu einem performanten (und auch noch stabilen) Ergebnis zu kommen.

Views sind schon mal eine gute Idee, auch SPs. Aber es gibt noch reihenweise andere Performance-Schrauben, etwa das Abstellen von LazyLoading, Verwendung von Pass-Through-Abfragen, wenn man nur Anzeigedaten verwendet usw. Du solltest hier mal die Suche nach Performancetips aus dem Internet durchgehen, dazu gibt es tonnenweise Material. Die Verwendung von asynchronen Recordsets ist meiner Meinung nach eher als experimentell einzustufen und bedarf eines großen Testaufwandes.

Gruß

Christian
stefaktiv
Im Profil kannst Du frei den Rang ändern


Verfasst am:
12. Sep 2013, 22:08
Rufname:

AW: Daten im Hintergrund nachladen - AW: Daten im Hintergrund nachladen

Nach oben
       Version: Office 2013

Mmm von diesem asynchronen ADO-Aufruf höre ich gerade zum ersten Mal. An sich geht es mir ja nicht um die Daten des zuerst angezeigten Reiters (Reiter 1 & 2 sind Daten zur Person selbst aus einer Tabelle "Personen"), sondern z.B. um die Adressen der Person.

Bis der Benutzer nach dem Anzeigen des Formulars mit der Maus auf einen anderen Reiter geklickt hat, vergeht in der Regel sowieso ein bisschen Zeit. Gleiches gilt, wenn z.B. zu den Personendaten etwas ergänzt wird (z.B. nach der Neuanlage der Person).

In dieser Zeit dürfte Access eben nicht durch das Nachladen der Daten der Unterformulare blockiert sein.

Zur Frage der Performance finde ich eigentlich gar nicht, dass es wirklich soviel Material gibt. Ich habe das große Access-Programmierhandbuch von MS Press, dann noch diverse Bücher zum SQL Server. Dann hab ich noch das neue Buch "Access und SQL Server" vom Minhorst-Verlag bestellt. Ein paar Kapitel sind schon für Käufer online verfügbar - so richtig gute Antworten hab ich aber auch dort nicht gefunden. Aber vielleicht hab ich bisher einfach nach den falschen Schlüsselwörtern in Google gesucht?
Bitsqueezer
Office-VBA-Programmierer


Verfasst am:
12. Sep 2013, 22:16
Rufname:


AW: Daten im Hintergrund nachladen - AW: Daten im Hintergrund nachladen

Nach oben
       Version: Office 2013

Hallo,

wenn Du unter "Access Performance Tips" und "SQL Server Performance Tips" suchst, solltest Du reichlich fündig werden. Englisch-Kenntnisse vorausgesetzt, noch viel mehr.

Gruß

Christian
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Microsoft Access und MS SQL Server: Daten aus mdb in (ASP)-Webseite wiedergeben 1 schwaelbchen75 327 27. Aug 2013, 15:11
Bitsqueezer Daten aus mdb in (ASP)-Webseite wiedergeben
Keine neuen Beiträge Microsoft Access und MS SQL Server: Wo ist "Daten verschieben nach SQL Server" ? 1 zachy 864 04. Apr 2013, 17:27
Bitsqueezer Wo ist "Daten verschieben nach SQL Server" ?
Keine neuen Beiträge Microsoft Access und MS SQL Server: Daten in einer Liste ändern mit Auswirkung auf Serverdaten 7 St.Jimmy 665 06. Dez 2011, 19:48
Bitsqueezer Daten in einer Liste ändern mit Auswirkung auf Serverdaten
Keine neuen Beiträge Microsoft Access und MS SQL Server: Daten mit SQL nachträglich einfügen 2 Stef.B. 1183 12. Mai 2011, 12:54
Stef.B. Daten mit SQL nachträglich einfügen
Keine neuen Beiträge Microsoft Access und MS SQL Server: Auslesen von MS SQL-Server Daten mittels Excel 1 Andi2333 2762 20. März 2011, 20:01
Bitsqueezer Auslesen von MS SQL-Server Daten mittels Excel
Keine neuen Beiträge Microsoft Access und MS SQL Server: Daten mit Akzenten lassen sich nicht an SQL-Tabellen anfügen 1 Cornelius Kirchenpauer 874 17. Jun 2010, 01:46
Nouba Daten mit Akzenten lassen sich nicht an SQL-Tabellen anfügen
Keine neuen Beiträge Microsoft Access und MySQL: Daten an eine MySQL Datenbank 5 marcofeustel 2395 31. Dez 2009, 09:40
trekking Daten an eine MySQL Datenbank
Keine neuen Beiträge Microsoft Access und MS SQL Server: Access Frontend für SQL Server, Daten bearbeiten nicht mgl. 1 axi0n 4673 30. Nov 2009, 20:13
Bitsqueezer Access Frontend für SQL Server, Daten bearbeiten nicht mgl.
Keine neuen Beiträge Microsoft Access und MySQL: bestimmte Daten exportieren 0 Seelenwanderer 1974 10. Aug 2009, 12:42
Seelenwanderer bestimmte Daten exportieren
Keine neuen Beiträge Microsoft Access und MS SQL Server: mit gespeicherter Prozedur und Schleife Daten aktualisieren 6 Cornelius Kirchenpauer 3604 01. Aug 2009, 10:22
Gast mit gespeicherter Prozedur und Schleife Daten aktualisieren
Keine neuen Beiträge Microsoft Access und MS SQL Server: (MSSQL2005) Import von Daten mittels BCP 0 Husen 1298 15. Jul 2009, 13:00
Husen (MSSQL2005) Import von Daten mittels BCP
Keine neuen Beiträge Microsoft Access und MS SQL Server: Daten zw. Access und MySQL synchronisieren 0 melino 3919 03. März 2009, 22:16
melino Daten zw. Access und MySQL synchronisieren
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Excel Tipps