Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Datensatzbezogener Bericht als PDF öffnen mit einem Button im Formular

Begonnen von Pergus, März 17, 2011, 11:57:53

⏪ vorheriges - nächstes ⏩

Pergus

Hallo Alle miteinander,
bin neu hier und kenne mich in Acc07 (WinXP) nur so gut aus, als dass ich es mir selber beigebracht habe.
Seit Tagen schon suche ich Hilfe in diversen Foren zu folgendem Problem:

Ich habe einen Ordner auf dem Desktop, in dem sich die Vereinsdatenbank und ein weiterer Ordner namens 'Einzelberichte' befinden.
In der Datenbank befindet sich ein Formular 'frmStempelungen', in dem ein Button 'Einzelbericht als PDF' folgende Aktion beim klicken auslösen soll:

Der aktuelle Datensatz im Formular 'frmStempelungen' soll als Bericht 'rptStempelungen' geöffnet werden, dieser dann aber als PDF im oben genannten Ordner 'Einzelberichte' gespeichert werden. Der Clou dabei ist, dass pro "Stempelung" nur der aktuelle Datensatz als PDF gespeichert werden soll!

Hat jemand von Euch eine Ahnung, wie sowas geht! Bin dankbar für jede Hilfe und steh natürlich für Fragen (sollte ich mich zu kompliziert ausgedrückt haben!) diesbezüglich zur Verfügung!

Danke schon mal im Voraus!

Pergus
Win7, Office Professional 2010

T417

Hallo,
wenn ich dich richtig verstanden habe, könnte dir das weiterhelfen.
Ich stand mal vor einen ähnlichen Problem:
http://www.access-o-mania.de/forum/index.php?topic=11560.msg63580#msg63580


Gruß
T.
Arbeite normalerweise mit Access 2000/2003
In letzter Zeit häufiger mit Access 2007

Sowohl auf WinXP als auch auf Win7

Pergus

Danke für die schnelle Antwort,
leider habe ich weder in der Tabelle 'tblStempelungen' ein Feld zum speichern des Pfades noch im diesbezüglichen Formular 'frmStempelungen'. Ich müsste lediglich die 'StempelungsID' zum filtern verwenden.
D.h. der Bericht 'rptStempelungen' soll die aktuelle 'StempelungsID' des Formulars 'frmStempelungen' anzeigen und lediglich diesen einen Datensatz als PDF im Ordner 'Einzelberichte' speichern!
Win7, Office Professional 2010

accessundich

Schau Dir mal diese Diskussion an:
http://www.access-o-mania.de/forum/index.php?topic=10156.0

Die Franzsche Lösung funktioniert bei mir nun seit Jahr und Tag ohne Probleme. Jeder einzelne Datensatz kann da als PDF abgelegt werden und auch eine Auswahl aus einem Kombifeld ist möglich, weil es in der Tat nur des Schlüsselfeldes bedarf.

Viele Grüße
Andreas
---
Ich stelle keine komischen Fragen: Ich bin komisch.

Pergus

 :D Ich hab´s geschafft !!! :D

Falls jemand von Euch das gleiche Problem hat, poste ich Euch meine Lösungen:

Im Formular 'frmStempelungen' befinden sich 3 Buttons

- Button 'EinzelberichtÖffnen' öffnet aus dem Formular den Bericht gefiltert nach der 'StempelungsID'

  Der Bericht hat als Datensatzquelle eine Abfrage, in der alle relevanten Felder vorhanden und gruppiert sind,
  einzig das Feld 'StempelungsID' hat folgendes Kriterium: [Formulare]![frmStempelungen]![StempelungsID]

Private Sub EinzelberichtÖffnen_Click()
On Error GoTo fehler

    DoCmd.OpenReport "rptEinzelbericht", acPreview, , , acWindowNormal, True

Exit_fehler:
    Exit Sub
fehler:
    MsgBox Err.Description
    Resume Exit_fehler

End Sub



- Button 'EinzelberichtInOrdnerAlsPdf' generiert aus dem gefilterten Bericht ein PDF-Dokument

Private Sub EinzelberichtInOrdnerAlsPdf_Click()
On Error GoTo fehler

    DoCmd.OutputTo acOutputReport, "rptEinzelbericht", _
        acFormatPDF, "Einzelbericht.pdf", True

Exit_fehler:
    Exit Sub
fehler:
    MsgBox Err.Description
    Resume Exit_fehler


End Sub


   ??? (das eizige was ich noch nicht hinbekommen habe ist, das ich den Pfad übergebe,
   ??? wohin das PDF gespeichert werden soll - in diesem Fall im Ordner, der sich wiefolgt befindet:
   ??? Desktop, Ordner 'Projekt Zivilschutz', Ordner 'Einzelberichte'!
   ??? Der Bericht (als PDF)  sollte zum Schluss folgenden variablen Namen bekommen: "jjjj.mm.tt Einzelbericht"
   ??? Das Datum stammt aus dem Feld 'DatumVon' der Tabelle 'tblStempelungen'
   ??? WER WEIß WIE MAN SO WAS HINBEKOMMT, BIN AM VERZWEIFELN!!!   :-[    :-\    :'(


- Button 'SendEmailReportPdf'

Private Sub SendEmailReportPdf_Click()
On Error GoTo fehler

DoCmd.SendObject acSendReport, "rptEinzelbericht", _
    acFormatPDF, "hans.wurst@schicksmir.de", _
    , "dick.doof@habsgleich.de", _
    "Einzelbericht", "Anbei erhalten Sie den Einzelbericht", True

Exit_fehler:
    Exit Sub
fehler:
    MsgBox Err.Description
    Resume Exit_fehler

End Sub


Nun sieht die Welt doch ganz anders aus!  ;D

Pergus
Win7, Office Professional 2010

database

Hallo,

bezüglich Speicherort der Datei würde ich dir vorschlagen einen Speicherort in einem Laufwerk zu verwenden.
z.B.:
ZitatDoCmd.OutputTo acOutputReport, "rptEinzelbericht", _
       acFormatPDF, "C:\Ordner\Unterordner\Einzelbericht.pdf", True

Der Desktop gehört zu den s.g. Special Folders, die u z.B. unter XP so ansprechen kannst
Die Funktion fügst du in eine Standardmodul ein (Ist natürlich für andere BS anzupassen) um sie von verschiedenen Stellen aus benutzen zu können:

Zitat
Option Explicit

Public Function DeskTop()As String
   DeskTop = Environ("UserProfile") & "\Desktop\"
End Function

Aufruf in deinem Fall sollte m.E. so funktionieren (UNGETESTET):

Zitat
Private Sub EinzelberichtInOrdnerAlsPdf_Click()
On Error GoTo fehler
Dim dateipfad as String

dateipfad = DeskTop & "\ProjektZivilschutz\Einzelberichte\" & Format(Date, "yyyy.mm.dd") & "Einzelbericht.pdf"

   DoCmd.OutputTo acOutputReport, "rptEinzelbericht", _
       acFormatPDF, dateipfad , True

Exit_fehler:
   Exit Sub
fehler:
   MsgBox Err.Description
   Resume Exit_fehler


End Sub


HTH

Pergus

Hallo database

ich danke Dir für Deine großartige Hilfe, hat gleich auf Anhieb geklappt!!!  ;)
Gibt es da eine Möglichkeit, wie der Druck von alleine startet, oder hängt das vom PDF-Programm ab?
Ich, z.B. nutze Adobe Reader X, Version 10.0.1

Habe in meiner DB mehrere Formulare, die fast alle die gleichen sieben Schaltflächen haben:


  • zum ersten Datensatz
  • zum vorherigen Datensatz
  • neuer  Datensatz
  • zum nächsten  Datensatz
  • zum letzten Datensatz
  • Datensatz löschen
  • Datensatz speichern
  • Formular schließen

Um nicht zu jeder einzelnen Schaltfläche in jedem Formular die Code neu schreiben oder kopieren zu müssen, habe ich folgende Lösung gewählt (der Übersicht wegen!):

Da nicht anders möglich steht zu jeder einzelnen Schaltfläche nur kurz, z.B.:

Private Sub BerichtDrucken_Click()

Set frm = Screen.ActiveForm
druckenDatensatz
End Sub


Die gesamte Code steht im Modul 'Schaltflächen', denen ich zu allererst folgendes vorausschicke:

Public frm As Form


...damit auch ja der Name des aktuellen Formulars mitgegeben wird!

Dann folgt:

Public Sub druckenDatensatz()
On Error GoTo fehler
Dim strFileName As String
Dim strDocName As String

DoCmd.SetWarnings False
strFileName = Application.CurrentDb.Name
strDocName = Left(strFileName, InStrRev(strFileName, "\")) & "Einzelberichte" & "\" & _
Format(Date, "yyyy.mm.dd") & " " & "Einzelbericht ZS Sarntal.pdf"

DoCmd.OutputTo acOutputReport, "rptEinzelbericht", acFormatPDF, strDocName, True
DoCmd.SetWarnings True

Exit_fehler:
   Exit Sub
fehler:
   MsgBox Err.Description
   Resume Exit_fehler
   
End Sub


Mit Deiner Hilfe habe ich es endlich geschafft, nur den Pfad lasse ich mir von

Application.CurrentDb.Name (??? gibt es da einen Befehl, der den Pfad nur bis zum Ordner ausliest, worin sich die DB befindet ?  ???)

auslesen, um das ganze variabel zu nutzen. Denn diese Datenbank (wie Du auch ganz richtig sagst, der Desktop eigentlich ein Special Folder ist), wenn sie mal fertig sein wird, dem Verein übergeben wird, der sie ja dann irgendwohin auf dem PC speichert, und ich im nachhinein nicht mehr muss die Code anpassen, nur weil sich da mal der Speicherort geändert hat.

Also nochmals herzlichen dank!!!  :)

Pergus
Win7, Office Professional 2010

database

Hallo,

Zitatgibt es da einen Befehl, der den Pfad nur bis zum Ordner ausliest, worin sich die DB befindet

Left(CurrentDb.Name,Len(CurrentDb.Name)-Len(Dir(CurrentDb.Name)))

sieh mal bei Donkarl rein:

http://www.donkarl.com?FAQ2.5

Empfehlung am Rande:

Vermeide Leerzeichen in Datei- und Verzeichnisnamen!

Pergus

 :)  :)  :)  Ich kann nur noch sagen: D A N K E ! ! !  :)  :)  :)

Dein Wissen ist wirklich erstaunlich, hab einige Deiner Tipps und Ratschläge im Forum zu anderen Themen schon nutzen können!
Alle führten zum geplanten Ziel!

Weißt Du dazu noch eine Lösung:

ZitatGibt es da eine Möglichkeit, wie der Druck von alleine startet, oder hängt das vom PDF-Programm ab?
Ich, z.B. nutze Adobe Reader X, Version 10.0.1

Mit freundlichen Grüßen aus Südtirol


Pergus
Win7, Office Professional 2010

database

Hallo,

freut mich, wen ich dir mit meinen Beiträgen helfen konnte, sollte ja auch Sinn der Sache sein! :D ;D

Natürlich gäbe es auch die Möglichkeit eine geöffnete Applikation per VBA anzusprechen um einen Ausdruck zu veranlassen.
Um aber diese Verrenkungen zu umgehen - wobei ich ad hoc keine Lösung für den AcroReader zur Hand hätte - öffne ganz einfach den Bericht aus Access heraus.
Du gibst diesen als Datei (PDF) aus, also muss er ja genauso dargestellt sein.

In Etwa so:


Public Sub druckenDatensatz()
On Error GoTo fehler
Dim strFileName As String
Dim strDocName As String

DoCmd.SetWarnings False
strFileName = Application.CurrentDb.Name
strDocName = Left(strFileName, InStrRev(strFileName, "\")) & "Einzelberichte" & "\" & _
Format(Date, "yyyy.mm.dd") & " " & "Einzelbericht ZS Sarntal.pdf"

DoCmd.OutputTo acOutputReport, "rptEinzelbericht", acFormatPDF, strDocName, True   'Ausgabe in Datei

'Ausgabe auf den eingestellten Standard-Drucker
DoCmd.OpenReport "rptEinzelbericht", acViewNormal    'drucken veranlassen
DoEvents    'Druckvorgang ablaufen lassen
DoCmd.Close acReport, "rptEinzelbericht"    'Bericht schließen

DoCmd.SetWarnings True

Exit_fehler:
   Exit Sub
fehler:
   MsgBox Err.Description
   Resume Exit_fehler
   
End Sub


HTH


Pergus

Hallo Peter,

ich bin sprachlos, Du bist genial!!!  ;)

Ich denk mal, zu diesem Beitrag habe ich keine Fragen mehr!
Sollte ich weiterhin an einem Problem hängen bleiben, weiß ich mit Sicherheit, daß hier wirklich kompetente Leute immer hilfsbereit sind!

Mit bestem Dank  ;)

Pergus

Win7, Office Professional 2010