WklGrid
Ein flaches, datengebundenes Raster für Access-Formulare. Es zeigt die Datensätze einer Tabelle, einer Abfrage oder einer SQL-Anweisung in Spalten. Benutzer und Code können gruppieren, filtern und Summen bilden. Wie ein Unterformular folgt das Raster einem Master-Datensatz, und es bleibt auch bei einer Million verknüpfter Datensätze schnell. Es baut auf der Engine von `WklTreeList` auf und teilt mit ihr Spalten, Zelleditoren, Formatierung und Export.
Erste Schritte
Häufige Aufgaben
Schaubild
+- Grid1 -------------------------------------------------------------------+ | [Ort ^] [Aktiv ^] [1] | +-------------+--------------+-------------------+--------------------------+ | Kunde v | Ort v | Umsatz v | [2] | | Bo* | | >= 100 | [3] | +-------------+--------------+-------------------+--------------------------+ | v Ort: Bonn (3) | 430,00 € | [4] | | > Albers | Bonn | 120,00 € | [5] | | +- Bestellungen | Notizen ---------------------------------------+ [6] | | | Artikel | Menge | | | | Artikel 1 | 10 | | | +----------------------------------------------------------------+ | | > Conrad | Bonn | 300,00 € | | | > Ort: Koeln (2) | 80,00 € | | +-------------+--------------+-------------------+--------------------------+ | | | 560,00 € | [7] | +---------------------------------------------------------------------------+ | [x] [Kunde] beginnt mit "Bo" und [Umsatz] >= 100 Filter löschen [8] | +---------------------------------------------------------------------------+
| Bereich | Bedeutung |
|---|---|
| 1 | Gruppierungsbereich: Einen Spaltenkopf hierher ziehen, um nach ihm zu gruppieren; ein Klick auf einen Chip kehrt die Reihenfolge seiner Gruppen um (ShowGroupPanel, GroupFields) |
| 2 | Spaltenköpfe: Ein Klick sortiert, Ziehen verschiebt oder gruppiert; der Trichter öffnet die Werteliste der Spalte |
| 3 | Filterzeile: eine Bedingung je Spalte (ShowFilterRow, ColumnFilter) |
| 4 | Gruppenzeile mit der Anzahl der Datensätze und der Gruppensumme jeder Spalte |
| 5 | Datensatz; der Pfeil klappt seine Detailansichten auf (DetailViews) |
| 6 | Detailansichten des aufgeklappten Datensatzes, eine Registerkarte je verknüpfter Datenquelle |
| 7 | Fußzeile mit den Spaltensummen (ShowFooter, Summary einer Spalte) |
| 8 | Filterleiste, solange Spalten gefiltert sind (ShowFilterBar) |
Wichtige Funktionen
- Gebunden wie ein Datenblatt:
RecordSourceundKeyFieldgenügen; die Spalten ergeben sich aus den Feldern (Designer-Seite Datenherkunft, „Spalten aus Feldern anlegen“). Änderungen schreibt Access zurück, mit Before- und After-Ereignissen, Gültigkeitsregeln und einer Zeile für neue Datensätze. - Gruppierung: durch den Benutzer im Gruppierungsbereich oder per Code (
GroupFields), über mehrere Ebenen, mit Gruppenzeilen, die die Anzahl der Datensätze und die Summen der Spalten zeigen. - Spaltenfilter: Filterzeile, Werteliste in jedem Spaltenkopf, Filterleiste; dazu eine Suche über alle sichtbaren Spalten (Strg+F).
- Master-Detail ohne Code: Das Raster folgt dem aktuellen Datensatz seines Formulars, einem anderen Raster des Formulars (
LinkMasterFields = "Grid1"oder"Grid1.KundeID") oder einem Recordset; ein Access-Unterformular folgt dem Raster auf dieselbe Weise. - Detailansichten: Ein Datensatz klappt die zu ihm gehörenden Datensätze anderer Datenquellen auf, je eine Registerkarte (
DetailViews,AddDetailView). - Servermodus für Datenherkünfte mit einer Million Datensätzen und mehr (
DataMode = wgdServer): Gelesen werden nur die angezeigten Datensätze; Filter, Gruppierung und Summen laufen in der Datenquelle. Verknüpfte SQL-Server- und Wkl-OData-Tabellen werden an dem Access-Datenbankmodul vorbei gelesen. - Export nach Excel, XML und JSON so, wie das Raster es zeigt: Gruppen als Gliederung, Gruppensummen als
SUBTOTAL. - Designer mit eigenen Seiten und einer Live-Vorschau mit den echten Daten.
- UI Automation: Datensätze, Gruppenzeilen, Filterzeile, Gruppierungsbereich und Detailansichten für Sprachausgaben und Testwerkzeuge.
Grundkonzepte
Die Daten bleiben in Ihren Tabellen. Das Raster liest die Datenherkunft und schreibt jede
Änderung über Access zurück (AutoSave), Datensatz für Datensatz und in einer Transaktion.
Lehnt die Datenquelle eine Änderung ab – wegen einer Gültigkeitsregel, eines Pflichtfelds oder
eines Datendienstes hinter einer ODBC-Verknüpfung –, meldet das Raster den Text von Access oder
des Treibers in DataError und markiert die Zeile. Ein neuer Datensatz behält seine Werte, bis
der Benutzer sie korrigiert oder verwirft; ein vorhandener Datensatz zeigt wieder den Wert aus
der Datenquelle.
Datensätze sind flach, Gruppen sind eine Ansicht. Jeder Datensatz der Datenquelle ist eine
Zeile. Das Gruppieren ändert die Datensätze nicht und liest sie nicht neu: Es ist eine Ansicht,
die der Benutzer im Gruppierungsbereich und VBA über GroupFields ändert. Eine Gruppenzeile
steht für keinen Datensatz; sie zeigt die Summen ihrer Datensätze.
Zwei Arten zu lesen. Standardmäßig (wgdMemory) lädt das Raster alle Datensätze und
filtert, gruppiert und summiert im Arbeitsspeicher – richtig für einige Zehntausend Datensätze.
Im Servermodus (wgdServer) fragt es die Datenquelle nach der Anzahl der Datensätze und nach
der Seite, die es anzeigt; jeder Filter, jede Gruppe und jede Summe ist eine Anweisung an die
Datenquelle. Der Modus ist eine Einstellung am Formular und betrifft den Code nicht, der das
Raster verwendet: Die Member sind in beiden Modi dieselben.
Master-Detail in drei Richtungen. Detail seines Formulars (LinkChildFields,
LinkMasterFields mit Feldern des Formulars), Detail eines anderen WKL-Steuerelements des
Formulars (LinkMasterFields nennt das Steuerelement) und Master eines Access-Unterformulars
(LinkMasterFields des Unterformulars nennt das Raster). Code kann die Masterwerte direkt
setzen (MasterValues), etwa in UserForms von Excel und Word, die keinen Formulardatensatz
haben.
Änderungen durch den Benutzer und durch Code. Eingaben, der Gruppierungsbereich, die
Filterzeile und das Kontextmenü lösen Ereignisse aus (BeforeColumnFilter,
BeforeGroupExpand, BeforeInsert …), in denen VBA anpassen oder abbrechen kann. Dieselben
Änderungen per Code (ColumnFilter, GroupFields, CellValue) lösen keines dieser Ereignisse
aus – wie AfterUpdate eines Access-Steuerelements.
Jedes Formular, auch eine Seite in einem Unterformular. Das Raster gehört zu dem Formular,
auf dem es liegt; auf einer Seite, die in einem Unterformular-Steuerelement angezeigt wird, ist
das das Formular der Seite. Seine Tasten (F2, Strg+F, Esc) wirken im Raster, wo immer es liegt.
Einen Namen in LinkMasterFields sucht das Raster nur auf ebendiesem Formular; ein Raster auf
einer Seite kann daher kein Steuerelement des Hauptformulars nennen. Verwenden Sie stattdessen
MasterValues aus dem Code. Verankerungen wirken auf einer solchen Seite wie auf jedem
Formular; ein in beide Richtungen verankertes Raster folgt also der Seite
(WklSplitter und WklDockLayout). Um es mit
anderen Bereichen anzuordnen, legen Sie es auf dieser Seite in einen Bereich eines
WklDockLayout mit FillSection.
Administration
Fehlerbehebung
Für Entwickler
Verwandte Themen
Keine