Farbschema: Hell
Sie befinden sich hier: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » how-to » Große Tabellen im Servermodus anzeigen

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 sql an (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: Filter muss 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ächsten Requery; „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 SourceTableName der Verknüpfung, eine Tabelle oder eine Sicht), nie an die Tabellen hinter einer Sicht: COUNT, die Seite mit OFFSET ... FETCH oder einer Rangfolge, GROUP BY für Gruppen und Summen, DISTINCT fü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 Recordset gebundenes Raster oder eines, dessen MasterFilterMode im 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 · Zuletzt geändert: von Wolfgang van der Stille