Lösungen

Aktuellen Datensatz drucken

Drucken über [Strg]+[P]

Zu der PrintOut-Methode gibt es eine Alternative. An fast beliebigen Stellen in Access könnten Sie den Ausdruck über [Strg]+[P] starten. Das können Sie sich ebenfalls zunutze machen, um den aktuellen Datensatz im Formular zu drucken.

Sie müssen dazu lediglich den aktuellen Datensatz markieren und dann mit [Strg]+[P] den Ausdruck starten. Aber ganz so einfach ist das nicht. Zwar können Sie mit der Sendkeys-Anweisung die Tastenfolge senden, damit ist aber noch nicht der aktuelle Datensatz markiert. Dies muss der Benutzer mit Bearbeiten/Datensatz selbst durchführen. Wollen Sie ihm das ersparen, muss das Markieren im Programmcode berücksichtigt werden. Im Drucken-Dialog müssen Sie dann sicherstellen, dass außerdem die Option Markierter Datensatz aktiviert wird und auch dazu die entsprechende Tastenfolge senden. Im Detail sieht der Code daher aus wie in Listing 3. Sie benötigen zwei Sendkeys-Anweisungen, die nacheinander die folgenden Tastenfolgen übergeben:

  • [Alt]+[B],[W] (Aktuellen Datensatz auswählen).

  • [Strg]+[P], [Alt]+[M] (Drucken-Dialog aufrufen und Option markierte Datensätze aktivieren).

Private Sub bttDrucken2_Click()
'Datensatz markieren
'Alt + B+W Senden
If Val(Application.SysCmd(acSysCmdAccessVer)) > 9 Then
'Access 2002 und 2003
SendKeys "%BW", True
ElseIf Val(Application.SysCmd(acSysCmdAccessVer)) = 9 Then
'Access 2000
SendKeys "%B", True
SendKeys "%U", True
ElseIf Val(Application.SysCmd(acSysCmdAccessVer)) < 9 Then
'Access 97
SendKeys "%B", True
SendKeys "%M", True
End If
'Drucken-Dialog aufrufen und Option "markierte Datensätze" aktivieren
SendKeys "^(p)%M{Enter}", True
End Sub

Zudem müssen Sie mit Hilfe einer If-Verzweigung unterscheiden, um welche Version von Access es sich handelt, da die einzelnen Versionen unterschiedliche Tastenkombinationen verwenden, um den aktuellen Datensatz auszuwählen. In Access 2002 und höher müssen Sie [Alt]+[B], [W] senden, in Access 2000 jedoch nacheinander [Alt]+[B] und [Alt]+[U]. In Access 97 ist die Kombination [Alt]+[B] und [Alt]+[M] erforderlich. Und diese Unterschiede gelten nur für die deutschen Versionen von Access. Es ist durchaus wahrscheinlich, dass Versionen in anderen Sprachen wieder andere Tastenfolgen verwenden.

Vorteil dieser Methode ist, dass zunächst der Drucken-Dialog angezeigt wird, so dass der Benutzer auch den Drucker für die Ausgabe wählen kann. Allerdings funktioniert diese Methode nur so lange, wie der Benutzer nicht während der Codeausführung das Fenster wechselt und nicht in anderen Access-Versionen andere Tastenfolgen verwendet werden.

Optional können Sie aber auch dafür sorgen, dass dem Benutzer der Drucken-Dialog gar nicht erst angezeigt wird, indem Sie zusätzlich zum Schluss die [Enter]-Taste senden. Dazu ergänzen Sie in der zweiten Sendkeys-Anweisung am Ende den Code für die [Enter]-Taste durch:

SendKeys "^(p)%M{Enter}", True