Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 5/2003.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Tipps und Tricks zu Berichten

André Minhorst, Duisburg; Manfred Hoffbauer, Düsseldorf

In den Tipps und Tricks der vorliegenden Ausgabe finden Sie einige interessante Möglichkeiten, die Ausgabe von Berichten effizienter zu gestalten. Dabei beziehen sich die folgenden Tipps und Tricks zum größten Teil auf die Schritte, die um die eigentliche Berichterstellung herum erfolgen. Nach der Lektüre der kommenden Seiten können Sie Ihre Datenbank zum Beispiel leicht vor Benutzern schützen, die Berichte ohne Daten oder ohne Vorhandensein eines Druckers ausgeben möchten.

Vorhandensein von Daten
überprüfen

Was ist schon ein Bericht ohne Daten? Das sollten Sie sich überlegen, bevor Sie Ihre Kunden oder Mitarbeiter auf eine von Ihnen entwickelte Datenbank loslassen.

Um zu verhindern, dass Berichte ohne Daten angezeigt werden, gibt es prinzipiell zwei Möglichkeiten: Entweder Sie überprüfen die Datenherkunft vor dem Aufrufen des Berichts oder Sie verwenden die Ereigniseigenschaft Bei ohne Daten von Berichten.

Datenherkunft vor dem Öffnen des Berichts überprüfen

Während der Entwicklungsphase einer Datenbank oder bei Datenbanken für interne Zwecke ist das Öffnen von Berichten über einen Doppelklick auf den entsprechenden Eintrag im Datenbankfenster gängige Praxis.

In den meisten Fällen erfordert das Öffnen von Berichten aber die Übergabe von Parametern wie Filterbedingungen und dergleichen oder die Datenbank soll von Mitarbeitern oder Kunden verwendet werden. Hier erfolgt das Öffnen von Berichten in der Regel über entsprechende Prozeduren, die der Benutzer entweder durch das Betätigen von Schaltflächen oder die Verwendung von Menüeinträgen aufruft.

In diesen Fällen können Sie leicht vor dem eigentlichen Öffnen des Berichts dessen Datenherkunft überprüfen.

Falls die Datenherkunft keine Daten enthält, geben Sie eine entsprechende Meldung aus und unterbinden das Öffnen des Berichts.

Hinweis

Wenn Sie noch einen Schritt weiter gehen möchten, können Sie die Steuerelemente, die dem Öffnen des Berichts dienen, erst bei Vorhandensein von Daten aktivieren und ansonsten deaktivieren. Dies zieht aber in der Regel einen unverhältnismäßig hohen Programmieraufwand nach sich. (

Verwenden der Ereigniseigenschaft Bei Ohne Daten

Berichte stellen die Ereigniseigenschaft Bei Ohne Daten zur Verfügung, die beim Öffnen eines Berichts mit leerer Datenherkunft ausgelöst wird.

Ein Beispiel für den Aufbau dieser Prozedur finden Sie in Quellcode 1.

Neben einer entsprechenden Meldung, die den Benutzer auf das Fehlen der Daten hinweist, müssen Sie den Wert des Parameters Cancel auf den Wert True setzen. Nur dann wird das Öffnen des Berichts abgebrochen.

Private Sub Report_NoData(Cancel As Integer)

    MsgBox "Der Bericht enthält keine Daten."

    Cancel = True

End Sub

Quellcode 1

Private Sub cmdBerichtDrucken_Click()

    On Error GoTo cmdBerichtDrucken_Click_Err

        DoCmd.OpenReport "<Berichtsname>"

    Exit Sub

cmdBerichtDrucken_Click_Err:

    If Err.Number = 2501 Then

        Resume Next

    End If

End Sub

Quellcode 2

Abb. 1: Standarddrucker in der Registry

Wenn Sie den Bericht per Code und nicht über das Datenbankfenster aufgerufen haben, löst das Abbrechen des Öffnen-Vorgangs einen Fehler aus. Diesen sollten Sie in der Prozedur mit der Anweisung zum Öffnen des Berichts berücksichtigen und eine Fehlerbehandlung wie in Quellcode 2 verwenden.

Vorhandensein eines
Standarddruckers überprüfen

Bevor ein Bericht überhaupt in der Vorschau angezeigt geschweige denn ausgedruckt werden kann, muss auf dem aktuellen Rechner zunächst einmal ein Drucker installiert und als Standarddrucker definiert sein.

Wenn Sie versuchen, einen Bericht ohne installierten Standarddrucker auszugeben, erhalten Sie eine entsprechende Fehlermeldung.

Bei der Ermittlung des Standarddruckers hilft Ihnen die API-Funktion GetProfileString. Die Funktion dient dem Auslesen bestimmter Werte aus der Windows-Registry (s. Abb. 1) bzw. in früheren Windows-Versionen aus der Datei Win.ini.

Diese Funktion (s. Quellcode 3) deklarieren Sie im Kopf eines neuen VBA-Moduls. Die Funktion StandarddruckerErmitteln ruft die API-Funktion auf und übergibt beim Aufruf automatisch die für die Ermittlung des Standarddruckers erforderlichen Parameter (s. Quellcode 4).

Außerdem verarbeitet sie das Ergebnis der Funktion direkt mit der Funktion TeilstringErmitteln (s. Quellcode 5) weiter, die den ersten der Einträge des Ergebnisses ausliest.

Zeichenketten trennen per Funktion

Die Funktion TeilstringErmitteln hat drei Parameter: Gesamtstring, Trennzeichen und Teilstringnummer. Mit dem ersten Parameter übergeben Sie der Funktion die auszuwertende Zeichenkette.

Der zweite Parameter enthält das Zeichen, das in der Zeichenkette als Trennzeichen verwendet wird - also beispielsweise Komma, Semikolon und so weiter. Der dritte Parameter enthält die Nummer des Elements der Liste, das die Funktion zurückgeben soll.

Private Declare Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" _

    (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As _
    String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long

Quellcode 3

Public Function StandarddruckerErmitteln() As String

    Dim Rueckgabewert As String

    Dim Funktionsergebnis As Long

    Rueckgabewert = String(255, Chr(0))

    Funktionsergebnis = GetProfileString("Windows", "Device", "", Rueckgabewert, _
        Len(Rueckgabewert))

    If Funktionsergebnis > 0 Then

        GetDefaultPrinter = TeilstringErmitteln(Rueckgabewert, ",", 1)

    Else

        GetDefaultPrinter = ""

    End If

End Function

Quellcode 4

Private Function TeilstringErmitteln(Gesamtstring As String, Trennzeichen As String, _
    Teilstringnummer As Integer) As String

    Dim Startposition As Integer

    Dim Endposition As Integer

    Dim AktuelleStringnummer As Integer

    Dim AktuellesZeichen As Integer

    AktuellesZeichen = 1

    Startposition = 0

    For AktuelleTeilstringnummer = 1 To Teilstringnummer - 1

        AktuellesZeichen = InStr(AktuellesZeichen, Gesamtstring, Trennzeichen)

        If AktuellesZeichen = 0 Then

            Teilstring = ""

            Exit Function

        Else

            AktuellesZeichen = AktuellesZeichen + 1

        End If

    Next AktuelleTeilstringnummer

    Startposition = AktuellesZeichen

    Endposition = InStr(Startposition + 1, Gesamtstring, Trennzeichen)

    If Endposition = 0 Then

        Endposition = Len(Gesamtstring) + 1

    End If

    Teilstring = Mid$(Gesamtstring, Startposition, Endposition - Startposition)

End Function

Quellcode 5

Im vorliegenden Fall übergibt die Funktion StandarddruckerErmitteln der Funktion TeilstringErmitteln die Zeichenkette Acrobat PDFWriter,winspool,LPT1:, als Trennzeichen das Komma und als Nummer des zurückzugebenden Elements die 1.

Die Funktion TeilstringErmitteln gibt folgerichtig die Zeichenkette Acrobat PDFWriter zurück.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Verwandte Beiträge:

Berichte manuell füllen

Termine in Berichten darstellen

Gruppensummen ohne Gruppen im Berichtsfuß

© 2003-2015 André Minhorst Alle Rechte vorbehalten.