Große Tabellen im Servermodus anzeigen
Zeigen Sie eine verknüpfte Tabelle mit einer Million Datensätzen in einem Raster an, das sich in etwa einer Sekunde öffnet und ohne Laden der Datensätze blättert, filtert, sortiert und gruppiert.
Voraussetzungen: WKL Forms Object Library 1.23 oder höher.
Lösungsüberblick
Mit DataMode = wgdServer liest das Raster nur die Datensätze, die es anzeigt. Anzahl der Datensätze, Filter,
Gruppen, Summen, Wertelisten und die Suche werden zu Anweisungen an die Datenherkunft. Geschrieben wird weiterhin
über Access.
Schnell ist das Raster nur, wenn die Quelle es zulässt. Voraussetzungen:
- Eine verknüpfte ODBC-Tabelle als
RecordSource– SQL Server über den ODBC Driver 18 (andere Treiber werden nicht unterstützt) oder ein Datendienst über den Wkl-OData-Treiber. Das Raster liest dann über eine eigene Verbindung, am Access-Datenbankmodul vorbei. - Eine gespeicherte Anmeldung in der Verknüpfung: Windows-Authentifizierung oder das mit der Verknüpfung gespeicherte Kennwort (Kennwort speichern beim Verknüpfen). Ohne sie kann das Raster keine eigene Verbindung öffnen.
KeyField= der Primärschlüssel der Tabelle, damit die Verknüpfung in Access einen eindeutigen Index hat.- Indizes auf dem Server für die Spalten, nach denen Benutzer sortieren, filtern und gruppieren; der Servermodus überlässt diese Arbeit dem Server.
- Mit dem Wkl-OData-Treiber: Der Datendienst muss Pass-Through-Anweisungen (SQL-Anweisungen des Aufrufers) für die Datenquelle und für den Aufrufer zulassen. Der Administrator des Datendiensts schaltet Pass-Through für die Datenquelle ein und legt für den Aufrufer entweder eine Regel mit der Ressource
sqlan (Dienstschlüssel oder ein Windows-Konto mit Persons = Service) oder vergibt eine Regel, die nicht schreibgeschützt ist (eigene SQL-Anmeldung oder Persons = Impersonate). Die Schritte gehören zur Konfiguration des Datendiensts, nicht des Rasters. Ohne Pass-Through liest das Raster ersatzweise über Access (siehe Hinweise).
Umsetzung
With Me!Grid1.Object
.RecordSource = "tblUmsaetze" ' linked table, 1,000,000 records
.KeyField = "ID"
.DataMode = wgdServer
End With
Oder schalten Sie auf der Designerseite Datenherkunft den Server-Modus ein. Die Einstellung wird mit dem Formular gespeichert.
Hinweise
- Weicht aus, statt zu scheitern. Lokale Tabellen, Abfragen, SQL-Anweisungen, ein gesetzter
Filter, Verknüpfungen ohne gespeicherte Anmeldung und Wkl-OData-Verknüpfungen ohne Pass-Through werden über Access gelesen, die Schlüssel in Blöcken von 10.000. Alles funktioniert; entfernte Positionen sind langsamer, und Summen, die die Quelle verweigert, bleiben leer (Summen bleiben im Servermodus leer). - Was sich vom Speichermodus unterscheidet:
Filtermuss eine Access-SQL-Bedingung sein (kein JPath); ein Klick auf eine Spaltenüberschrift fragt die Quelle erneut ab; Gruppen werden nach Wert geordnet; Textbedingungen vergleichen gespeicherte Werte; ein bearbeiteter Datensatz behält seinen Platz bis zum nächstenRequery; „Nur Treffer“ in der Suchleiste filtert nicht. - Was das Raster sendet. Über seine eigene Verbindung (die Verbindungszeichenfolge der Verknüpfung) sendet das Raster SQL im ODBC-Dialekt an das Objekt, auf das die Verknüpfung zeigt (die
SourceTableNameder Verknüpfung, eine Tabelle oder eine Sicht), nie an die Tabellen hinter einer Sicht:COUNT, die Seite mitOFFSET ... FETCHoder einer Rangfolge,GROUP BYfür Gruppen und Summen,DISTINCTfür Wertelisten. Das Verknüpfen einer Sicht behält daher jeden Zeilenfilter der Sicht bei, auch einen auf den angemeldeten Benutzer; wer stattdessen die Tabelle verknüpft, liest an einem solchen Filter vorbei. Verknüpfen Sie Sichten statt Tabellen, wenn der Server Zeilen je Benutzer einschränkt. Ob der Wkl-OData-Treiber eine Anweisung übersetzt oder an den Datendienst weiterreicht, entscheidet der Treiber; siehe dessen Dokumentation. Geschrieben wird immer über Access und seine Verknüpfung. - Immer im Speicher: Ein mit
Recordsetgebundenes Raster oder eines, dessenMasterFilterModeim Speicher filtert, lädt unabhängig von der Einstellung jeden Datensatz. - Export: Der Export liest jeden exportierten Datensatz; filtern Sie große Quellen vorher. Eine Arbeitsmappe nimmt höchstens 1.048.574 Zeilen auf.
- Wie schnell: Eine Tabelle mit einer Million Datensätzen auf SQL Server öffnet sich in etwa einer Sekunde, über ODBC Driver 18 ebenso wie über den Wkl-OData-Treiber. Die Zeiten hängen vom Server und seinen Indizes ab.
Verwandte Themen
de/wiki/msaccess/comctl/how-to/show-large-tables-in-server-mode.txt · Last modified: by Wolfgang van der Stille