5. Berichte

5.1   Drucker und Druckeinstellungen ändern 5.10 Sortierung wird nicht übernommen
5.2   Schwarze Linien werden nicht gedruckt 5.11 Sortieren/Gruppieren-Fenster futsch
5.3   Jede zweite Zeile grau 5.12 Ungewollte Leerseiten
5.4   Öffnen mit Zoom-Faktor 5.13 Nur 999 Seiten/Exemplare in A97
5.5   Vertikaler Text 5.14 Leere Zeilen nicht drucken
5.6   Export mit Formatierungen 5.15 Senkrechte Linien verlängern
5.7   Zwischensumme und Übertrag 5.16 Laufende Nummer/Summe in Berichten
5.8   Ohne Daten nicht drucken 5.17 Bericht als PDF drucken
5.9   Nur aktuellen Datensatz drucken 5.18 Memo wird nach 255 Zeichen abgeschnitten
   
5.1 Drucker und Druckeinstellungen ändern
http://www.donkarl.com?FAQ5.1 aktualisiert 2010-03-29

Problem

Während des Arbeitens mit einer MDB/MDE sollen der Drucker und/oder irgendwelche Druck-Einstellungen dynamisch geändert werden.

Lösung

Ab AX gibt es das Printer-Objekt und die Printers-Auflistung (s. <F1> in der VBE). Mit ihrer Hilfe ist es einfach, den aktuellen Drucker eines bestimmten Berichts zu wechseln z.B.

DoCmd.OpenReport "MeinBericht", acViewPreview, , , acHidden
Reports!MeinBericht.Printer = Application.Printers("NameEinesAnderenDruckers")


Diese Druckerzuordnung wird nicht gespeichert sondern gilt nur für den aktuellen Ausdruck.
Ähnlich funktioniert es für die meisten Druckeinstellungen:
http://support.microsoft.com/?kbid=284286

Eine weitere Möglichkeit ist das Wechseln des Standarddruckers:
'************* CODE START *************
'ursprünglichen Standarddrucker in eine Variable
Dim strPrinterOld As String
strPrinterOld = Application.Printer.DeviceName

'Standarddrucker Access-weit umstellen
Application.Printer = Application.Printers("NameEinesAnderenDruckers")

'hier ein paar sagenhaft gute Ausdrucke

'am Schluss ursprünglichen Standarddrucker wieder einstellen
Application.Printer = Application.Printers(strPrinterOld)

'************* CODE ENDE *************

Um ein Kombinationsfeld (z.B. "cbo_Printers") mit den verfügbaren Druckern zu füllen, reicht es, den Herkunftstyp auf Wertliste einzustellen und Beim Öffnen des Formulares oder Beim Hingehen zum Kombi folgenden Code zu verwenden:

Dim prtloop As Printer
Me!cbo_Printers.RowSource = ""
For Each prtloop In Application.Printers
  Me!cbo_Printers.AddItem prtloop.DeviceName
Next prtloop


Es folgen Infos für ältere Access-Versionen, in denen es noch kein Printer-Objekt gibt:

Bis A00 kann man nur Workarounds verwenden oder komplizierte APIs bzw. die Eigenschaften PrtMip und PrtDevMode. (s. <F1>)

Du kannst den Bericht in der Seitenvorschau öffnen und dann das Druckdialogfenster für den Anwender aufrufen z.B:
DoCmd.OpenReport "Berichtsname", acViewPreview
RunCommand acCmdPrint


Wenn es nur um verschiedene Schubladen oder andere Einstellungen bei einem Drucker geht, kannst du auch den Drucker mehrfach in Windows installieren und bei den Eigenschaften des Druckers die jeweilige Lade etc. einstellen. Im Bericht verwendest du dann den Drucker mit der gewünschten Lade. Ggf. auch mehrere Kopien des Berichtes mit jeweils entsprechenden Druckern. Eine programmatorische Methode wird gezeigt in:
http://support.microsoft.com/?kbid=200546

Ansonsten sind zum Wechseln des Druckers komplexe API-Aufrufe notwendig. Verschiedene fertige Varianten gibt es bei:
http://www.freeaccess.de/ (OBD Druck)
http://www.groupacg.com
http://www.mcwtech.com/downloads.aspx
http://www.access-paradies.de

nach oben

5.2 Schwarze Linien werden nicht gedruckt
http://www.donkarl.com?FAQ5.2

Problem

Schwarze Linien erscheinen zwar in der Berichts-Vorschau, werden aber auf manchen Druckern nicht ausgedruckt.

Ursache

Lt. MS tritt der Fehler auf, wenn der Drucker-Spooler auf RAW gesetzt ist.

Lösung

Wenn du unbedingt schwarze Linien brauchst, dann ändere die Spooler-Einstellung auf EMF. Ansonsten ändere die Farbe der Linie z.B. auf dunkelgrau oder dunkelblau.
s. a. http://support.microsoft.com/?kbid=164254

nach oben

5.3 Jede zweite Zeile grau
http://www.donkarl.com?FAQ5.3 aktualisiert 2007-07-26

Problem

Du möchtest bei jedem zweiten Datensatz im Bericht die Hintergrundfarbe auf grau (oder eine andere Farbe) einstellen, damit sich ein gliederndes Muster ergibt.

Lösung

Im Ereignis Beim Drucken des Detailbereiches verwendest du folgenden Code (Tipp verbessert von Mike Küster):

If Me.Section(acDetail).BackColor = 16777215 Then  'weiß
  Me.Section(acDetail).BackColor = 12632256  'grau
Else
  Me.Section(acDetail).BackColor = 16777215
End If


Tipp von Götz Müller:
Bei ungerader Anzahl von Datensätzen sind Vorschau und Ausdruck unterschiedlich (Färbigkeit vertauscht). Abhilfe, falls das stört: Zusätzlich zur obigen Prozedur schreibst du im Ereignis Bei Seite des Berichtes:
Me.Section(acDetail).BackColor = 16777215

Einzeiler von Karl-Heinz Signus, zudem einfach variierbar:
Me.Section(acDetail).BackColor = IIf(CurrentRecord Mod 2 = 1, 12632256, 16777215)
'(jede 3. Zeile: ...Mod 3 = 1... etc.)


Tipp von Thomas Pfoch:
Wenn man Unterberichte verwendet, haben die einen eingefärbten Hintergrund, der die Zeilenfärbung überdeckt. Sie lassen sich aber mit folgender Codezeile im Ereignis Beim Drucken des Detailbereiches des Unterberichtes anpassen:
Me.Section(acDetail).BackColor = Me.Parent.Section(acDetail).BackColor

Tipp von Arne Dieckmann:
Man kann auch die laufende Nummer (FAQ 5.16) auswerten und dann im Format-Ereignis des Detailbereiches so etwas verwenden:

If Me!lfdNr Mod 2 = 1 Then
  Me.Section(acDetail).BackColor = 12632256
Else
  Me.Section(acDetail).BackColor = 16777215
End If


Speziell bei Unterberichten ist das nett, da so der 1. Datensatz immer grau ist, egal wie der letzte Detailbereich des vorherigen Unterberichts gefärbt war.

nach oben

5.4 Öffnen mit Zoom-Faktor
http://www.donkarl.com?FAQ5.4

Problem

Du möchtest einen Bericht in der Vorschau nicht mit 100% Größe öffnen (wie standardmäßig eingestellt), sondern mit einem bestimmten Zoom-Faktor, wie er im Vorschaufenster in der Symbolleiste auswählbar ist.

Lösung

Das Einstellen des Zoom-Faktors ist per VBA möglich. Allerdings nicht im Bericht selber sondern nur "von außen" z.B. in einem Formular, das Code zum Öffnen des Berichtes enthält. Verwende dazu nach dem Befehl zum Öffnen des Berichtes die entsprechende RunCommand-Konstante. z.B. für 50%-Größe:
DoCmd.OpenReport "Berichtsname", acViewPreview
RunCommand acCmdZoom50


Die weiteren RunCommand-Konstanten findest du in der Online-Hilfe unter "RunCommand-Methode" / "RunCommand-Konstanten". Schema: acCmdZoomProzentzahl
Ausnahme dabei ist die Konstante für "Passend", also an die Größe des Vorschaufensters angepasst.
Sie lautet: acCmdFitToWindow

Alternativ zu den RunCommands gibt es die undokumentierte Eigenschaft ZoomControl (Tipp von Günther Ritter) mit der man den Zoomgrad beliebig stufenlos einstellen kann. Statt des RunCommand-Befehls schreibt man in der Zeile nach dem Öffnen des Berichtes z.B. für 80% Zoom:
Reports!Berichtsname.ZoomControl = 80

Wie gesagt, ist die Eigenschaft undokumentiert und daher mit Vorsicht zu genießen z.B. muss man damit rechnen, dass sie in künftigen Versionen nicht mehr funktioniert. Bisher sind mir aber keine Probleme damit bekannt.

nach oben

5.5 Vertikaler Text
http://www.donkarl.com?FAQ5.5

Problem

Du möchtest Text vertikal oder schräg drehen bzw. drucken.

Lösung

Ab A00 gibt es für Textfelder die Eigenschaft Vertikal mit der man die Schrift um 90 Grad im Uhrzeigersinn drehen kann.

Diverse ActiveX-Steuerelemente bieten mehr Möglichkeiten:

Spinlbl.ocx von Andrew R. Miller bei Günther Kramer:
http://www.access-paradies.de/download/spinning_label.php  

Stephen Lebans hat einige Basteleien zu dem Thema auf:
http://www.lebans.com/xrotatetext.htm

Ein käufliches ActiveX-Steuerelement ist das Rotated Label Custom Control bei
http://www.mabry.com/rotext

nach oben

5.6 Export mit Formatierungen
http://www.donkarl.com?FAQ5.6 aktualisiert 2007-01-03

Problem

Du möchtest einen Bericht exportieren (z.B. nach Word, HTML, RTF).
Dabei gehen jedoch alle grafischen Elemente (Linien, Rechtecke etc.) verloren.

Lösung

Es gibt leider keine Möglichkeit einen Bericht mit allen Formatierungen so zu exportieren, dass er weiterhin komplett bearbeitbar ist.

Stephen Lebans bietet Tools an, die zumindest einen Teil dieser Wünsche erfüllen:
http://www.lebans.com/ReportUtilities.htm

Wenn's um die bloße Ansicht geht, gibt es von MS den Snapshot Viewer.
Mit Hilfe dieses ActiveX-Steuerelementes können (auch ohne Access) Berichte mit allen Formatierungen betrachtet werden. Die Berichte werden dabei im speziellen Snapshot-Format gespeichert. Das OCX kann auch z.B. in Word als Objekt eingebunden werden.
Downloadadresse für den Snapshot-Viewer

Eine andere Möglichkeit ist das PDF-Format.

nach oben

5.7 Zwischensumme und Übertrag
http://www.donkarl.com?FAQ5.7

Problem

Du möchtest in einem mehrseitigen Bericht Zwischensummen und Überträge anzeigen.

Lösung

Angenommen du hast ein Feld "Preis", von dem du auf jeder Seite des Berichtes unten eine Zwischensumme anzeigen willst und auf der Folgeseite oben einen entsprechenden Übertrag:

1. Im Detailbereich legst du ein zusätzliches Feld "LaufSumme" an mit Steuerelementinhalt
=[Preis]
Die Eigenschaft Laufende Summe des Steuerelementes stellst du auf Über Alles, Sichtbar auf Nein.

2. Im Seitenfuß erzeugst du ein Feld "Zwischensumme" mit Steuerelementinhalt
=[LaufSumme]

3. Im Seitenkopf erzeugst du ein ungebundenes Feld "Uebertrag".

4. Im Ereigniscode Beim Formatieren des Seitenfußes schreibst du:
Me!Uebertrag = Me!Zwischensumme

5. Damit nicht schon auf der ersten Seite ein Übertrag 0,- sichtbar ist, stellst du die Eigenschaft Seitenkopf des Berichtes auf Außer Berichtskopf. Analog dazu stellst du Seitenfuß auf Außer Berichtsfuß.

nach oben

5.8 Ohne Daten nicht drucken
http://www.donkarl.com?FAQ5.8 aktualisiert 2008-03-26

Problem

Du möchtest verhindern, daß ein Bericht, der keine Daten enthält, in der Vorschau angezeigt oder gedruckt wird.

Lösung

Variante 1

Wenn der Bericht per Code geöffnet wird (z.B. in einem Formular), kann man vor dem Befehl zum Öffnen prüfen, ob die Datenherkunft des Berichtes leer ist z.B.

If Dcount("*", "Datenherkunft_des_Berichtes") > 0 Then
  DoCmd.OpenReport "Berichtsname"
Else
  MsgBox "Der Bericht enthält keine Daten.", _
    vbInformation + vbOKOnly, "Keine Daten"
End If


Variante 2

Schreib im Ereignis Bei Ohne Daten des Berichtes:

MsgBox "Der Bericht enthält keine Daten.", _
  vbInformation + vbOKOnly, "Keine Daten"

Cancel = True


Wenn der Bericht per Code geöffnet wird, dann ergibt dieses Vorgehen einen Laufzeitfehler, weil die Aktion OpenReport abgebrochen wurde. Diesen Fehler kannst du abfangen nach dem Muster:

On Error GoTo ErrLeer

DoCmd.OpenReport "Berichtsname"

ErrLeer:
If Err.Number = 2501 Then Resume Next  'oder Exit Sub

nach oben

5.9 Nur aktuellen Datensatz drucken
http://www.donkarl.com?FAQ5.9

Problem

Du möchtest aus einem Formular heraus nur den aktuellen Datensatz drucken. Wenn du den entsprechenden Bericht öffnest, werden aber immer alle Datensätze des Formulares bzw. der zugrundeliegenden Tabelle oder Abfrage ausgegeben.

Lösung

Verwende als Datensatzherkunft des Berichtes eine Abfrage und schreibe dort bei den Kriterien eines passenden, eindeutigen Feldes einen Bezug auf dein Formular. z.B.
Forms!MeinFormular!Id

oder

Wenn du den Bericht per VBA öffnest, kannst du den Bezug auf den aktuellen Datensatz im Formular direkt übergeben. z.B.

Bei einem Zahlfeld:
DoCmd.OpenReport "DeinBericht", , , "Id =" & Me!Id

bei einem Textfeld:
DoCmd.OpenReport "DeinBericht", , , "Firma = '" & Me!Firma & "'"

Analog kannst du vorgehen, wenn du nicht nur einen Datensatz, sondern eine Gruppe von Datensätzen mit einem gemeinsamen Merkmal drucken willst.

nach oben

5.10 Sortierung wird nicht übernommen
http://www.donkarl.com?FAQ5.10

Problem

Du hast als Datenherkunft eines Berichtes eine Tabelle oder Abfrage, in der du nach bestimmten Feldern sortiert hast. Diese Sortierung wird aber nicht in den Bericht übernommen.

Ursache

Berichte verwenden interne Abfragen, die nur zufällig die Sortierung der Datenherkunft beibehalten können. Man kann sich also nicht darauf verlassen.

Lösung

Verwende den Sortieren/Gruppieren-Dialog um die Sortierung festzulegen. Dazu wählst du im Berichtsentwurf die Schaltfläche in der Symbolleiste (die nach links wegdüsenden Raketentriebwerke) oder den Menüpunkt Ansicht/Sortieren und Gruppieren.
Im Dialogfenster kannst du die gewünschte Sortierung einstellen. Diese Einstellungen haben immer Priorität vor denen in der Datenherkunft.

nach oben

5.11 Sortieren/Gruppieren-Fenster futsch
http://www.donkarl.com?FAQ5.11

Problem

Im Berichtsentwurfsfenster ist die Schaltfläche für Sortieren und Gruppieren aktiviert (bzw. der Menüpunkt im Menü Ansicht), aber das PopUp-Fenster zur Bearbeitung dieser Einstellungen ist nicht sichtbar.

Ursache

Meist passiert das mit A97 und nachdem die Bildschirm-Auflösung geändert wurde (z.B. beim Überspielen der Datenbank auf einen Laptop). Dann können die Einstellungen für die Platzierung des Fensters in der Registry sich so ändern, dass es nicht mehr im sichtbaren Bereich des Bildschirmes liegt.

Lösung

Öffne den Bericht in Entwurfsansicht.
Falls das Symbol für Sortieren und Gruppieren nicht aktiviert ist, dann klick drauf. Drück die Tastenkombination <ALT> + <Leertaste> danach <V>. Damit aktivierst du Verschieben im Fenstermenü des verrutschten Fensters. Jetzt kannst du das Fenster mit den Pfeiltasten durch die Gegend schieben, bis es wieder sichtbar ist. Evtl. ein bissel herumprobieren.

Wenn das nicht gelingt, dann suche den folgenden Schlüssel in der Registry (für A97, sonst unterscheidet sich die Versionsnummer nach "Office"):
HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Access\Settings\SGST

Bei den fünf Werten dort ist wahrscheinlich einer negativ.
Ändere die Werte auf positive z.B.: 1;1;1;1;1;

nach oben

5.12 Ungewollte Leerseiten
http://www.donkarl.com?FAQ5.12

Problem

Bei einem Bericht ist in der Seitenansicht und/oder beim Ausdruck jede zweite Seite leer.

Ursache

Die Breite der Seiten ist zu groß eingestellt.

Lösung

Verringere die Gesamtbreite des Berichtes. Einflussfaktoren:

- Breite des Berichtes (s. Eigenschaftenfenster)
- linker und rechter Seitenrand (Menü Datei/Seite einrichten)
- bei mehreren Spalten der Spaltenabstand
- manche Drucker (-treiber) brauchen zusätzliche Ränder und verringern so die theoret. mögl. Breite.

nach oben

5.13 Nur 999 Seiten/Exemplare in A97
http://www.donkarl.com?FAQ5.13

Problem

Du möchtest in A97 einen vierstelligen Druckbereich einstellen bzw. 1000 oder mehr Exemplare eines Berichtes ausdrucken. Im Drucken-Dialogfenster sind beim Druckbereich (Seiten - von - bis) und bei Anzahl Exemplare aber nur 3-stellige Eingaben möglich d.h. maximal die Zahl 999 einstellbar.

Ursache

Das Problem kommt mit dem Service-Release 2 (SR2) für Office 97. In der ursprünglichen Version von A97 waren noch vierstellige Einstellungen möglich. Das SR2 installiert aber eine neue Version der Schriftart Tahoma, von der nur noch 3 Ziffern in die Dialogfelder passen. In den neueren Access-Versionen ist das Problem behoben.

Lösung

Per VBA lassen sich unter Verwendung der Methode PrintOut (s. Online-Hilfe) größere Werte einstellen. Ebenso bei Verwendung der Makro-Aktion Drucken. Beschreibung des Vorgehens:
http://support.microsoft.com/?kbid=224158

Eine andere Methode ist, die Originaldateien der Schriftart Tahoma aus dem Ordner OS\Fonts einer Office97-CD ohne SR2 drüber zu installieren.

nach oben

5.14 Leere Zeilen nicht drucken
http://www.donkarl.com?FAQ5.14

Problem

In einem Bericht gibt es Felder, die leer sein können. Du möchtest, dass die dadurch entstehende Leerzeile nicht gedruckt wird, d.h. der darunter liegende Text nachrückt.

Lösung

Stell die Eigenschaft Verkleinerbar des Feldes und des Bereiches, in dem sich das Feld befindet, auf Ja. In der Online-Hilfe zu dieser Eigenschaft findest du einiges zu den Möglichkeiten und Einschränkungen.

Falls das nicht zum gewünschten Ergebnis führt, gibt es weitere Lösungsmöglichkeiten wie z.B. das Einstellen der Höhe des Steuerelementes auf 0,01 cm und der Eigenschaft Vergrößerbar auf Ja.

Wenn es Bezeichnungsfelder auf gleicher Höhe gibt, bleiben die evtl. sichtbar und stören. Du kannst sie im Ereignis Beim Formatieren des Bereiches z.B. mit folgendem Code ein/ausblenden:

Me!DeinBezeichnungsFeld.Visible = Not IsNull(Me!DeinTextFeld)

nach oben

5.15 Senkrechte Linien verlängern
http://www.donkarl.com?FAQ5.15

Problem

Du hast in einem Bericht senkrechte Linien, die sich über die ganze Höhe eines Bereiches erstecken. Wenn sich jedoch die Höhe eines anderen, vergrößerbaren Steuerelementes ändert, wird der Bereich höher und die Linien wachsen nicht mit, denn sie besitzen keine Vergrößerbar-Eigenschaft.

Lösung

Linien, die mit dem Bereich "mitwachsen", kann man mit Hilfe der Line-Methode im Code der Ereignisprozedur Beim Drucken des Bereiches zeichnen. Die KB hat ein Beispiel dafür:
http://support.microsoft.com/?kbid=170838
Weitere Details zur Line-Methode (z.B. ähnliche Steuerung von Rechtecken) gibt's in der Online-Hilfe.

nach oben

5.16 Laufende Nummer/Summe in Berichten
http://www.donkarl.com?FAQ5.16

Problem

Du möchtest in einem Bericht ein Textfeld mit einer fortlaufenden Nummer oder fortlaufenden Summe haben.

Lösung

Im Gegensatz zu Abfragen oder Formularen gibt es in Berichten eine Eigenschaft dafür: Laufende Summe. Damit ist die Aufgabe sehr einfach zu lösen.

Laufende Nummer

- neues Textfeld einfügen
- im Eigenschaftenfenster des Textfeldes folgenden Steuerelementinhalt setzen:
=1
- die Eigenschaft Laufende Summe des Textfeldes auf Über Alles einstellen

Laufende Summe

- neues Textfeld einfügen
- im Eigenschaftenfenster des Textfeldes folgenden Steuerelementinhalt setzen:
=[Name_des_zu_summierenden_Feldes]
- die Eigenschaft Laufende Summe des Textfeldes auf Über Alles einstellen

Die Eigenschaft Laufende Summe kann auch auf Über Gruppe eingestellt werden, damit in einem gruppierten Bericht bei jeder Gruppe neu gestartet wird.

nach oben

5.17 Bericht als PDF drucken
http://www.donkarl.com?FAQ5.17 aktualisiert 2011-12-16

Problem

Du möchtest einen Bericht im PDF-Format (Portable Document Format von Adobe) drucken.

Lösung

Ab der Version 2007 unterstützt Office das PDF-Format. Wenn bei O07 in den Exportdialogen kein PDF-Format zu sehen ist, musst du das entsprechende Add-In bei MS downloaden und installieren: http://www.microsoft.com/downloads/details.aspx?displaylang=de&FamilyID=f1fc413c-6d89-4f15-991b-63b07ba5f2e5
In Office 2010 ist das PDF-Format von vornherein dabei.
In diesen Access-Versionen kann man den Export auch einfach per VBA durchführen und dabei einen Speicherpfad mitgeben:

DoCmd.OutputTo acOutputReport, "MeinBericht", acFormatPDF, "c:\MeinPfad\MeinDateiname.pdf"

In Versionen vor A07 ist die einfachste Lösung das kostenlose Tool von Stephen Lebans:
http://www.lebans.com/reporttopdf.htm
Es handelt sich um 2 DLLs, die man in den Anwendungs- oder Win/System32-Ordner kopiert sowie ein Modul, das in die Anwendung zu importieren ist. Mit einer Zeile VBA-Code kann man dann eine PDF-Datei aus einem Bericht erstellen, in einem beliebigen Pfad speichern, im Acrobat Reader anzeigen etc. Damit ist es nicht mehr nötig, einen Druckertreiber oder dergl. zu installieren wie bei den älteren Lösungen.

Alternativ gibt es verschiedene Programme, die einen Eintrag in die Liste der verfügbaren Drucker vornehmen und PDF-Datei erzeugen.

Leistungsfähig und teuer ist das Original: Adobe Acrobat
s. dazu auch den Hinweis bei http://www.mvps.org/access/reports/rpt0011.htm

Mit dem Tool AP-PDFPrint kann man in seine Anwendungen für die gängigsten PDF-Tools die Speicherpfad-Eingabe einbauen (inkl. Druckerauswahl und -umschaltung)
http://www.access-paradies.de/tools/ap_pdfprint.php

Umfangreiche Möglichkeiten bietet das Tool PDF and Mail Class Library for Access: http://www.groupacg.com

Preiswerter sind Programme wie z.B.

Pdf995+pdfEdit995: http://www.pdf995.com
per INI-Datei können Speicherpfad/name, Multidokument-Modus etc. dynamisch eingestellt werden

PDFMachine: dt. http://www.broadgun.de/ , engl. http://www.pdfmachine.com/
bietet im Druckertreiber die Möglichkeit, einen Speicherpfad vorzugeben

Win2PDF: http://www.win2pdf.com
Speicherpfad & Co sind damit per Registry-Änderung (SaveSetting) dynamisch änderbar

PDFFactory: http://www.fineprint.com
PDFMailer: http://www.pdfmailer.de

Kostenlose Alternativen sind
FreePDF: http://shbox.de
und
PDFCreator: http://sector7g.wurzel6.de/pdfcreator/
bei dem auch der Speicherpfad/name per INI-Datei dynamisch eingestellt werden kann

nach oben

5.18 Memo wird nach 255 Zeichen abgeschnitten
http://www.donkarl.com?FAQ5.18 aktualisiert 2010-03-26

Problem

Du hast ein Memofeld im Bericht, das immer nur die ersten 255 Zeichen anzeigt, auch wenn die Eigenschaft Vergrößerbar des Textfeldes auf Ja eingestellt ist.

Lösung

Die häufigste Variante ist, dass der Bericht auf einer Abfrage basiert, in der das Memofeld bereits abgeschnitten wird. Ab A00 lassen sich Memofelder in Abfragen gruppieren. Zwecks interner Optimierung reduziert Access das Memo dabei jedoch auf die Länge eines Textfeldes = 255 Zeichen.
Ein DISTINCT, also "Keine Duplikate", in der Abfrage hat die gleiche abschneidende Wirkung wie eine Gruppierung.

Wenn das Memofeld in der Abfrage gruppiert ist (GROUP BY in SQL), dann musst du diese Gruppierung auf das Memofeld ersetzen oder umgehen. "Ersetzen" heißt, statt der Funktion Gruppierung eine andere zu verwenden z.B. ErsterWert (FIRST in SQL). "Umgehen" heißt z.B. das Memo aus der Abfrage ganz raus zu nehmen, eine 2. Abfrage nur mit dem Memo zu machen, und dann diese beiden Basisabfragen für den Bericht in einer zusätzlichen Abfrage zu kombinieren.

Das Abschneiden passiert auch in Union-Abfragen. Der Grund ist, dass UNION eine Gruppierung gleicher Werte beinhaltet. Die einfachste Abhilfe ist daher, UNION ALL zu verwenden, also auch Dubletten anzuzeigen. Dann wird das Memofeld nicht abgeschnitten.

Eine andere Ursache für das Abschneiden kann sein, dass eine Formatierung wie "<" oder ">" (= Klein- oder Großbuchstaben) für das Memofeld eingestellt ist. s. http://support.microsoft.com/?id=259893

nach oben