|
Berichte in Access
Berichte in Access
Es gibt eine Vielzahl von Fragestellungen rund um die Erstellung von Berichten mit Access. Einige interessante Aspekte möchte ich hier beleuchten:
|
Frage:
|
Wie kann ich die Datensätze in einem Bericht nummerieren? |
|
Antwort:
|
Du fügst ein neues, ungebundenes Textfeld ein. Als Steuerelementinhalt trägst Du "=1" ein. Jetzt setzt Du die Eigenschaft "Laufende Summe" auf "Über Alles". Fertig. |
|
ZusatzInfo:
|
Wenn Du für diese Eigenschaft den Wert "Über Gruppe" auswählst beginnt die Nummerierung in jeder Gruppe neu mit 1. |
|
Variable Höhe für Textfelder |
|
Frage:
|
Ich habe Textfelder mit unterschiedlich viel Inhalt. Wenn ich die Textfelder sehr groß mache, wird zwar alles angezeigt, bei wenig Inhalt entstehen jedoch Leerräume. Mache ich die Textfelder klein vermeide ich zwar die Leerräume, es wird aber nicht alles angezeigt. Was kann ich tun? |
|
Antwort:
|
Du stellst die Eigenschaften "Vergrößerbar" und "Verkleinerbar" des Textfeldes auf "Ja". |
|
ZusatzInfo: |
Außerdem musst Du diese Eigenschaften auch für den Bereich des Berichts, in dem sich dein Textfeld befindet, setzen. |
|
Zeilenweise Hintergrundfarbe ändern |
|
Frage:
|
Wie kann ich die Datensätze abwechselnd mit einem grauen Hintergrund versehen um so die Lesbarkeit zu erhöhen? |
|
Antwort:
|
Dazu fügst Du den folgenden Code im Ereignis "Beim Formatieren" ein:
If Me.Section(0).BackColor = 16777215 Then Me.Section(0).BackColor = 12632256 '(weiß) Else Me.Section(0).BackColor = 16777215 '(grau) End If
|
|
ZusatzInfo: |
|
|
Druckerauswahl-Dialog von Access öffnen |
|
Frage:
|
Ich möchte vor dem Ausdruck einen anderen Drucker auswählen. Wie kann ich den Druck-Dialog von Access starten? |
|
Antwort:
|
Du öffnest den Bericht in der Vorschauansicht:
DoCmd.OpenReport "rptDeinBericht", acPreView
und benutzt dann den folgenden Befehl:
DoCmd.RunCommand acCmdPrint
|
|
ZusatzInfo: |
Wenn der Bericht nicht in der Seitenansicht geöffnet wird greift der Druck-Dialog auf das aktuell geöffnete Objekt zu. |
|
Bestimmte Seite eines Berichts drucken |
|
Frage:
|
Ich möchte nur eine bestimmte Seite eines Berichts drucken. Was muss ich tun? |
|
Antwort:
|
Du öffnest den Bericht in der Vorschauansicht:
DoCmd.OpenReport, "rptDeinBericht", acPreView
und verwendest den Befehl "PrintOut", z.B.
DoCmd.PrintOut acPages, 10, 10
|
|
ZusatzInfo: |
Weitere Informationen zu diesem Befehl gibt es in der Access-Hilfe. |
|
Mehrere 'OpenArgs' übergeben |
|
Frage:
|
Seit Access 2002 gibt es die Möglichkeit einen Bericht mit 'OpenArgs' zu öffnen. Wie kann ich mehrere 'OpenArgs' übergeben? |
|
Antwort:
|
Du kannst alle Argumente, durch ein spezielles Zeichen getrennt, in einen String packen und als 'OpenArgs' übergeben. Innerhalb des Berichts zerstückelst Du diesen String wieder in seine Einzelteile.
|
|
ZusatzInfo: |
Dabei könnten Dir die Funktionen 'Join' und 'Split' behilflich sein. |
|
Keine 'OpenArgs' bis Access 2000 |
|
Frage:
|
Bis einschließlich Access 2000 gibt es beim Öffnen eines Berichts nicht die Möglichkeit, 'OpenArgs' zu übergeben. Welche alternativen Wege gibt es? |
|
Antwort:
|
Du rufst den Bericht von einem Formular aus auf. Auf diesem Formular platzierst Du ein unsichtbares Textfeld. In dieses Textfeld schreibst Du vor dem Öffnen des Berichts die 'OpenArgs' hinein. Jetzt öffnest Du den Bericht und greifst auf das Textfeld im Formular zu.
|
|
ZusatzInfo: |
Wenn das geöffnete Formular stört kannst Du dieses unsichtbar machen. |
|
Recordset als Datenquelle |
|
Frage:
|
Gibt es eine Möglichkeit, ein Recordset, dass per Programmcode erzeugt wurde als Daten-Quelle für einen Report zu verwenden? |
|
Antwort:
|
1. Schritt: Du deklarierst in einem Standard-Modul eine globale Variable vom Typ Recordset
Public rstRpt as DAO.Recordset
2. Schritt: Du erzeugst Dein Recordset und öffnest den Bericht
Set rstRpt = CurrentDb.OpenRecordset("SELECT * FROM tbl_DeineTabelle;") DoCmd.OpenReport "rpt_DeinBericht", acViewPreview rstRpt.Close Set rstRpt = Nothing
3. Schritt: Im Open-Ereignis des Berichts weist Du dem Bericht als Datenquelle das Recordset zu
Me.RecordSource = rstRpt.Name
|
|
ZusatzInfo: |
Das Ganze lässt sich noch mit etwas Fehlerbehandlung ausschmücken. |
|
Neue Seite nach x Datensätzen |
|
Frage:
|
Wie kann ich jeweils nach x Datensätzen im Detailbereich eine neue Seite beginnen? |
|
Antwort:
|
- Du fügst ein zusätzliches Textfeld ein (txtCounter) - Dieses Textfeld formatierst Du unsichtbar. - Dort trägst Du als Steuerelementinhalt ein: "=1" - Die Eigenschaft "Lfd. Summe" stellst Du auf "Über Alles". - Unterhalb der Daten des Detaildatensatzes fügst Du einen Seitenumbruch ein (brkDetails) - Beim Ereignis Formatieren des Detailbereichs fügst Du folgenden Code ein:
Private Sub Detailbereich_Format(Cancel As Integer, FormatCount As Integer) If Int(Me!txtCounter / 10) = Me!txtCounter / 10 Then Me!brkDetails.Visible = True Else Me!brkDetails.Visible = False End If End Sub
|
|
ZusatzInfo: |
Bei jedem 10. Datensatz wird der Seitenumbruch sichtbar gemacht. Sonst bleibt er unsichtbar (und verliert somit seine Wirkung). |
|
Mehrere Berichte, ein Druckauftrag |
|
Frage:
|
Wie kann ich mehrere Berichte mit nur einem Druckauftrag drucken um diese z.B. als Fax zu versenden? |
|
Antwort:
|
Du erstellst einen neuen Bericht und fügst die zu druckenden Berichte als Unterberichte in diesen Bericht ein. Wenn Du jetzt den neuen Bericht druckst werden alle Berichte mit nur einem Druckauftrag gedruckt.
|
|
ZusatzInfo: |
Die Seitenköpfe und -füsse werden in Unterberichten nicht gedruckt. Du musst diese Informationen ggfs. in den Berichtskopf bzw. -fuss verschieben. |
|
Seitenfuss auf letzter Seite ausblenden |
|
Frage:
|
Ich habe im Seitenfuss drei Punkte stehen um anzudeuten, dass weitere Seiten folgen. Wie kann ich den Seitenfuss auf der letzten Seite ausblenden? |
|
Antwort:
|
- Beim Ereignis Formatieren des Seitenfusses fügst Du folgenden Code ein:
Private Sub Seitenfuss_Print(Cancel As Integer, FormatCount As Integer) If Me.Page = Me.Pages Then Cancel = True End If End Sub
|
|
ZusatzInfo: |
Damit der Code funktioniert müssen Sie ein Steuerelement mit dem Inhalt "=[Seiten]" einfügen. Dadurch wird die Variable "Pages" mit Inhalt gefüllt. |
|
Frage:
|
Wie kann ich ein Deckblatt für einen Bericht erstellen? |
|
Antwort:
|
- Du fügst einen Berichtskopf ein.
- Hierin platzierst Du Deine Informationen für das Deckblatt.
- In den Eigenschaften des Berichtskopfs stellt Du bei "Neue Seite" den Wert "nach Bereich" ein.
|
|
ZusatzInfo: |
|
|
Bericht als FAX versenden |
|
Frage:
|
Wie kann ich einen Bericht direkt als Fax versenden? |
|
Antwort:
|
Das ist im wesentlichen vom verwendeten Fax-Programm abhängig. Nicht alle Programme bieten die Möglichkeit per VBA die Fax-Nummern anzugeben. Wenn Ihr Programm die Möglichkeit unterstützt, hilft ein Blick in die Dokumentation. I.d.R. wird die Fax-Nummer in die Registry geschrieben und der Bericht gedruckt. Das Fax-Programm verschickt dann den Bericht an die eingestellte Fax-Nummer.
|
|
ZusatzInfo: |
Wie Sie Ihre Berichte mit FRITZ!Fax 3 versenden können Sie in diesem Whitepaper von Gunter Avenius nachlesen. |
|
Snapshot-Datei: Probleme in Access 2003 |
|
Frage:
|
Wenn in Access 2003 eine Shnapshot-Datei erstellt werden soll versagt der Code, der unter Access 2002 funktioniert. Wo liegt der Fehler? |
|
Antwort:
|
In Access 2002 kann mit folgendem Code eine SnapShot-Datei erstellt werden:
DoCmd.OutputTo acOutputReport, "MeinBericht", acFormatSNP
Unter Access 2003 versagt dieser Code. Es erscheint eine Fehlermeldung. Wenn man statt der Konstante acFormatSNP den Text "Snapshot Format" als Parameter an die Funktion übergibt, funktioniert alles wieder wie gewohnt.
|
|
ZusatzInfo: |
|
|
Problem mit Berichts-Assistent |
|
Frage:
|
Wenn ich versuche mit dem Assistenten einen Bericht zu erstellen, bricht dieser den Vorgang ab. Es erscheint folgende Fehlermeldung: "Der Assistent konnte Ihren Bericht nicht erstellen." |
|
Antwort:
|
Sorge dafür, dass der User einen Standarddrucker hat. Manchmal hilft es auch testweise einen anderen Drucker zu installieren. Probleme kann es auch geben, wenn ein Netzdrucker als Standarddrucker definiert ist und die Online-Verbindung zu diesem unterbrochen ist.
|
|
ZusatzInfo: |
Der installierte Standarddrucker muss physikalisch nicht vorhanden sein. |
Letzte Bearbeitung: 26.08.2015, 20:28
|
|