Color scheme: Riviera
You are here: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » how-to » Detailansichten unter einem Datensatz anzeigen

Detailansichten unter einem Datensatz anzeigen

Lassen Sie den Benutzer einen Kunden im Raster aufklappen, um darunter seine Bestellungen und seine Notizen zu sehen, jeweils auf einer eigenen Registerkarte und ohne Unterformular.

Voraussetzungen: WKL Forms Object Library 1.23 oder höher.

Lösungsüberblick

Eine Detailansicht nennt eine Datenherkunft, deren Schlüssel und die Verknüpfung zwischen Detail- und Hauptdatensatz (LinkChildFields, LinkMasterFields, wie bei einem Unterformular). AddDetailView fügt eine hinzu; die Definitionen werden mit dem Formular in DetailViews gespeichert. Der Benutzer klappt einen Datensatz mit einem Klick auf seinen Pfeil oder mit Strg und + auf; Code verwendet ExpandDetail, CollapseDetail und DetailGrid.

Umsetzung

With Me!Grid1.Object
    .AddDetailView "Bestellungen", "tblBestellungen", "BestellNr", "KundeID", "KundeID", "Bestellungen", "Artikel;Menge"
    .AddDetailView "Notizen", "tblNotizen", "NotizID", "KundeID", "KundeID", "Notizen"
    .DetailHeight = 2400                       ' twips, the same for every expanded record
End With
 
' Open the orders of customer 3 and read them:
Me!Grid1.Object.ExpandDetail 3, "Bestellungen"
Debug.Print Me!Grid1.Object.DetailGrid(3, "Bestellungen").RecordCount

Die Designerseite Detailansichten bearbeitet dieselbe Liste (hinzufügen, entfernen, Reihenfolge, Felder jeder Ansicht, Höhe).

Hinweise

  • Jede Registerkarte ist ein eigenes Raster, das über dieselbe Access-Datenbank liest, im selben DataMode, mit Schriftart, Farben und AllowEditing des Hauptrasters. Seine Spalten sind ColumnFields oder jedes Feld der Quelle außer den Verknüpfungsfeldern; ihre Breiten passen sich den angezeigten Datensätzen an. Eine Spaltenüberschrift ist der Feldname oder der Alias einer SQL-Quelle; die Eigenschaft Caption eines Tabellenfelds wird nicht gelesen. Verwenden Sie Aliasnamen für Überschriften in einer anderen Sprache als der der Feldnamen.
  • Eine Ansicht speichert keine Einstellungen je Spalte (Breite, ReadOnly, Format, Nachschlageliste, Status). Über DetailGrid geänderte Spalten behalten die Änderung nur, solange der Datensatz aufgeklappt bleibt. Nehmen Sie solche Änderungen in DetailExpand vor, damit sie jedes Mal gelten.
  • Detailansichten haben eine Ebene: Eine Detailansicht kann keine eigenen Detailansichten haben.
  • Mit AllowAdditions des Hauptrasters hat eine Detailansicht ihre Zeile für neue Datensätze (NewItemRow). Ein dort hinzugefügter Datensatz erhält in seinen Verknüpfungsfeldern die Werte des Hauptdatensatzes, wie in einem Unterformular. Bearbeiten und Löschen folgen AllowEditing und AllowDeletions des Hauptrasters.
  • Die Ereignisse einer Detailansicht erreichen das Formularmodul nicht; DetailGrid gibt ihr Raster für Code zurück. Lehnt die Datenquelle eine Änderung ab, markiert die Detailansicht die Zeile und zeigt die Meldung selbst an. Das Objekt ist gültig, solange der Datensatz aufgeklappt bleibt.
  • Requery, eine geänderte Bindung oder ein anderer Hauptdatensatz eines verknüpften Rasters schließen jeden aufgeklappten Datensatz, weil dessen Datensätze möglicherweise nicht mehr vorhanden sind. DetailExpand und DetailCollapse melden die Änderungen des Benutzers und des Codes, nicht diese.
  • Eine Registerkarte, deren Datensätze sich nicht lesen lassen, zeigt statt eines Rasters den Grund an; das Hauptraster arbeitet weiter.
  • Die Zeilen unter einem aufgeklappten Datensatz rücken nach unten; Bildlauf, Klicks und UI Automation berücksichtigen die Lücke. Die Datensätze eines Hauptrasters mit einer Million Datensätzen bleiben virtuell.

Verwandte Themen

de/wiki/msaccess/comctl/how-to/show-detail-views.txt · Last modified: by Wolfgang van der Stille