[Eine Seite zurück] [Übersicht] [Eine Seite vor]

Benutzung auf eigene Gefahr !
Keine Garantie für garnichts !

Berichte über Listenfeldauswahl öffnen/drucken

Sprache / Programm: Access ab Version 97
Beschreibung

Um dem Anwender verschiedene Berichte zur Auswahl / Ausgabe anzubieten, eignet sich ein Listenfeld besonders.

Die Funktion entnimmt aus einem Listenfeld den Namen eines oder mehrerer Berichte und öffnet diesen im Vorschau-Modus.

VBA-Quelltext
Public Sub BerichtAnzeigen(ListenFeld As ListBox, Modus As Integer)
    Dim Nr As Long

    Nr = ListenFeld.ItemsSelected(0)
    ListenFeld.ItemData(Nr)
    DoCmd.OpenReport ListenFeld.Column(0, Nr), Modus
   
    ' Markierung im Listenfeld wieder entfernen
    ListenFeld.Selected(Nr) = False
End Sub
Argumente der Funktion/Prozedur

ListenFeld

Name des Listenfeldes mit den Berichten. Das Listenfeld muß als ListBox-Objekt übergeben werden, z.B. als ‘Me.BerichtsListe

Modus.

Gibt an, wie der Bericht zu öffnen ist. Zugelassene Konstanten sind acViewPreview (Berichtsansicht auf dem Bildschirm), acViewNormal (Bericht drucken) oder acViewDesign (Entwurfsansich)
Verwendete Variable

Nr

Zähler für die Berichte. Darf nicht vom Typ ‘Byte‘ sein, da bei fehlenden Berichten (Anzahl =0) ein negativer Wert zugewiesen würde.
Anwendungsbeispiel(e)...

Die Prozedur kann der Ereigniseigenschaft ‘Beim Klicken‘ oder ‘Beim Doppelklicken‘ in einem Listenfeld zugewiesen werden. Die Ereignisprozedur ‘Beim Klicken‘ für das Listenfeld ‘BerichtsListe‘ sieht dann so aus:

    Private Sub BerichtsListe_Click()

        BerichtAnzeigen Me.BerichtsListe, acViewNormal

    End Sub

Hinweis

Damit das Listenfeld die übergebenen Argumente auswertet, muß die Eigenschaft ‘Herkunftstyp‘ (RowSourceType) auf ‘Wertliste‘ eingestellt werden. Mit dieser Einstellung können der RowSource-Eigenschaft aber nur max. 2048 Zeichen zugewiesen werden.

Die MultiSelect-Eigenschaft (Mehrfachauswahl) des verwendeten Listenfeldes muß auf ‘Einzeln‘ (wenn nur ein ausgewählt werden darf) oder auf ‘Erweitert‘ (wenn mehrere Berichte ausgewählt werden dürfen) eingestellt werden.

Falls bei mehrspaltigen Listenfeldern der Name des Berichts nicht in der ersten Spalte (Spalte 0 nach Access-Zählung) steht, ist die 0 in Listenfeld.Column(0, Nr) auf die Nummer der Spalte -1 zu setzen.

Anwendungsgebiete, Fehler und Warnungen

Die Prozedur geht davon aus, dass der Name des Berichts in der ersten Spalte des Listenfeldes (Spalte 0) steht.