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
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.
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!
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
: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
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
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 SubMit 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
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 (http://www.donkarl.com?FAQ2.5)
Empfehlung am Rande:
Vermeide Leerzeichen in Datei- und Verzeichnisnamen!
:) :) :) 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
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
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