Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: carman0103 am Januar 02, 2014, 18:23:25

Titel: Feldinhalt als Dateiname
Beitrag von: carman0103 am Januar 02, 2014, 18:23:25
Prost Neujahr,

das Jahr ist noch nicht so alt und ich muss Euch schon ne Frage stellen. Ist es möglich, den Inhalt eines Feldes als Dateiname zu verwenden? Zur näheren Erklärung: Ich habe in Meiner Datenbank über Autos einen Bericht erstellt mit dem Namen "Datenblatt". In diesem Bericht gibt es ein Feld das ich gerne als Dateiname verwenden möchte, wenn ich den Bericht als PDF speichere. Ist es möglich, dass dieser Feldinhalt automatisch als Dateiname übernommen wird?

Vielen Dank im Voraus für Eure Antworten.
Titel: Re: Feldinhalt als Dateiname
Beitrag von: MzKlMu am Januar 02, 2014, 18:27:21
Hallo,
natürlich geht das, Du musst nur auch das Feld verweisen.
Zeige mal den Code zum Speichern des PDF.
Titel: Re: Feldinhalt als Dateiname
Beitrag von: carman0103 am Januar 04, 2014, 09:02:33
Hallo,

Ich habe in einem Formular eine Schaltfläche, mit der ich folgenden Code auslöse:

Private Sub druckpdf_Click()
    Dim BerichtsName As String
    Dim Filter As String
   
    BerichtsName = "Datenblatt"
    Filter = "[Datensatz] = " & Me![Datensatz]
    DoCmd.OpenReport BerichtsName, acPreview, , Filter
    DoCmd.PrintOut acPrintAll
    DoCmd.Close acReport, BerichtsName
End Sub


Vielen Dank schon mal für Deine Unterstützung.
Titel: Re: Feldinhalt als Dateiname
Beitrag von: DF6GL am Januar 04, 2014, 09:13:46
Hallo,

probier mal:


ZitatPrivate Sub druckpdf_Click()
    Dim BerichtsName As String
    Dim Filter As String
   
    BerichtsName = "Datenblatt"
    Filter = "[Datensatz] = " & Me![Datensatz]
    DoCmd.OpenReport BerichtsName, acPreview, , Filter
    Reports(BerichtsName).Caption = Me!Dateiname
    DoCmd.PrintOut acPrintAll
    DoCmd.Close acReport, BerichtsName
End Sub

Titel: Re: Feldinhalt als Dateiname
Beitrag von: database am Januar 04, 2014, 09:37:33
Hallo,

Zitat von: MzKlMu am Januar 02, 2014, 18:27:21
... Zeige mal den Code zum Speichern des PDF.

Der Code, den du da reingestellt hast speichert aber nix, der öffnet einen Bericht zum Drucken, das hat mit einer Speicherung als PDF nichts am Hut.
Titel: Re: Feldinhalt als Dateiname
Beitrag von: carman0103 am Januar 04, 2014, 09:55:30
Hi,

seltsamerweise macht mir Access daraus immer ein PDF. Aber seit ich den Code so umgestellt habe, DF6GL vorgeschlagen hat, geht das nicht mehr...
Titel: Re: Feldinhalt als Dateiname
Beitrag von: database am Januar 04, 2014, 10:00:49
Hallo,


[size=10pt]
Private Sub druckpdf_Click()
    Dim BerichtsName As String
    Dim Filter As String
   
    BerichtsName = "Datenblatt"
    Filter = "[Datensatz] = " & Me![Datensatz]
    DoCmd.OpenReport BerichtsName, acPreview, , Filter
    DoCmd.PrintOut acPrintAll
    DoCmd.Close acReport, BerichtsName
End Sub
[/size]


Tut leid, aber der Code öffnet einen Bericht mit gefilterten Daten - der Zusatz von Franz ändert die Beschriftung - druckt alle Datensätze und schließt danach den Bericht.
Von Speichern als PDF keine Spur  ::)
Titel: Re: Feldinhalt als Dateiname
Beitrag von: MzKlMu am Januar 04, 2014, 10:01:04
Hallo,
Zitatseltsamerweise macht mir Access daraus immer ein PDF.
dann ist als Drucker eine PDF Drucker eingestellt, da ist nichts seltsam dran.
Welche Access Version verwendest Du ?
Titel: Re: Feldinhalt als Dateiname
Beitrag von: carman0103 am Januar 04, 2014, 10:04:16
Als Standarddrucker ist NICHT der PDF-Drucker eingestellt. Ich verwende Access 2007.
Titel: Re: Feldinhalt als Dateiname
Beitrag von: database am Januar 04, 2014, 10:10:57
Hallo,

nicht als Standarddrucker sondern für diesen Bericht

Allerdings nimmt der Druckertreiber doch standardmäßig den Dateinamen - in dem Fall den Berichtsnamen - in den Speichern unter - Dialog auf oder täusche ich mich da?
Titel: Re: Feldinhalt als Dateiname
Beitrag von: carman0103 am Januar 04, 2014, 10:15:25
Ja, der Berichtsname wird standardmäßig als Dateiname verwendet. Ich möchte aber den Inhalt eines bestimmten Feldes automatisch als Dateinamen verwenden.

Wie müsste ich den Code denn ändern, um eine PDF zu erzeugen. Ich verwende dazu das Programm Free PDF. Wie spreche ich das Programm im Code an und lasse es als Dateinamen den Feldinhalt von Feld xy verwenden?
Titel: Re: Feldinhalt als Dateiname
Beitrag von: database am Januar 04, 2014, 10:24:25
Hallo,

bei Access 2007 brauchst du keinen speziellen PDF-Drucker mehr, Access 2010 hat die Speicherung von Berichten in unterschiedlichen Ausgabeformaten bereits als Bordmittel mit bzw. für 2007 gibt's ein AddIn ...  hier zu beziehen:
http://www.microsoft.com/de-de/download/details.aspx?id=9943 (http://www.microsoft.com/de-de/download/details.aspx?id=9943)

schau mal in der OH unter 'DoCmd.OutputTo'
Bei Acc 2010 schaut das so aus, für 2007 müsste es ähnlich sein.
DoCmd.OutputTo(ObjectType, ObjectName, OutputFormat, OutputFile, AutoStart, TemplateFile, Encoding)

für OutputFormat müsste dann 'acFormatPDF' stehen und für OutputFile der gewünschte Dateiname, der auch in einer String-Variablen verpackt sein kann (glaube ich). 

Titel: Re: Feldinhalt als Dateiname
Beitrag von: MzKlMu am Januar 04, 2014, 10:25:21
Hallo,
ZitatWie spreche ich das Programm im Code an und lasse es als Dateinamen den Feldinhalt von Feld xy verwenden?
das hat doch Franz bereits geschrieben:
Reports(BerichtsName).Caption = Me!FeldXY 'Formularfeld mit Dateiname

Aber verwende den Vorschlag von Peter, daher auch meine Frage nach der Accessversion.

Titel: Re: Feldinhalt als Dateiname
Beitrag von: database am Januar 04, 2014, 10:40:57
Hallo,

wenn du oben erwähntes AddIn installiert hast, sollte es mit Acc2007 so laufen:



[size=10pt]Private Sub druckpdf_Click()
    Dim BerichtsName As String
    Dim Filter As String, Pfad As String, Dateiname As String
   
    Pfad = "C:\DeinVerzeichnis\"
    Dateiname = Pfad & Me!DeinTextfeldMitDateinamen & ".PDF"
    BerichtsName = "Datenblatt"
    Filter = "[Datensatz] = " & Me![Datensatz]
    DoCmd.OpenReport BerichtsName, acPreview, , Filter
    Reports(BerichtsName).Caption = Me!DeinTextfeldMitDateinamen
    [color=green]'Bericht ausdrucken
[/color]    DoCmd.PrintOut acPrintAll
    [color=green]'Bericht als PDF ablegen
[/color]    DoCmd.OutputTo acOutputReport, BerichtsName, "PDF", Dateiname
    DoCmd.Close acReport, BerichtsName
End Sub

[/size]


HTH
Titel: Re: Feldinhalt als Dateiname
Beitrag von: carman0103 am Januar 04, 2014, 10:54:10
Ich hab das Addin installiert und den Code auf deinen Vorschalg abgeändert. Access will aber immer noch den normalen Drucker ansprechen...
Titel: Re: Feldinhalt als Dateiname
Beitrag von: MzKlMu am Januar 04, 2014, 11:00:39
Hallo,
Du musst in der Seiteneinrichtung den "Speziellen Drucker" einstellen. Dazu gibt es einen Menüpunkt. Kann ich Dir nicht genauer beschreiben, da ich kein A2007 habe.
Titel: Re: Feldinhalt als Dateiname
Beitrag von: DF6GL am Januar 04, 2014, 11:09:53
Hallo,


Für outputto:

1)wie heißt denn der Code nun aktuell?

2)steht im Berichtsentwurf unter Seite einrichten/Seite ein Haken bei Standard-Drucker?


für PrintOut:
1) im Berichtsentwurf unter Seite einrichten/Seite einen Haken bei "Spezieller Drucker" setzen und den FreePDF-Drucker angeben.
Titel: Re: Feldinhalt als Dateiname
Beitrag von: database am Januar 04, 2014, 11:23:43
Hallo,

Zitat
Ich hab das Addin installiert und den Code auf deinen Vorschalg abgeändert. Access will aber immer noch den normalen Drucker ansprechen...
Ja sicher, die Methode zum AUSDRUCKEN habe ich im Codebeispiel ja nicht entfernt - aber kommentiert.
setze vor diese Zeile ein Hochkomma, dann wird nicht auf dem Standarddrucker ausgedruckt.
DoCmd.PrintOut acPrintAll

DoCmd.OutputTo verwendet keinen Drucker
Titel: Re: Feldinhalt als Dateiname
Beitrag von: carman0103 am Januar 04, 2014, 12:10:46
Also momentan sieht der Code so aus:

Private Sub druckpdf_Click()
    Dim BerichtsName As String
    Dim Filter As String, Pfad As String, Dateiname As String
   
    Pfad = "[pfad]"
    Dateiname = Pfad & Me![Bericht] & ".PDF"
    BerichtsName = "Datenblatt"
    Filter = "[Datensatz] = " & Me![Datensatz]
    DoCmd.OpenReport BerichtsName, acPreview, , Filter
    Reports(BerichtsName).Caption = Me![Bericht]
    'Bericht ausdrucken
    DoCmd.PrintOut acPrintAll
    DoCmd.Close acReport, BerichtsName
End Sub


Das Häkchen ist bei "spezieller Drucker" gesetzt. Ich habe es mit und ohne dem von Peter erwähnten Hochkomma versucht. Ich habe auch mein Free-PDF und den Adobe PDF Drucker versucht. beides funktioniert leider nicht. Was mache ich denn falsch?
Titel: Re: Feldinhalt als Dateiname
Beitrag von: database am Januar 04, 2014, 12:27:44
Hallo,

du hast das AddIn installiert - JA
du hast meinen Codevorschlag ausprobiert - NEIN  ;)

In dem von dir im letzten Posting gezeigten Code fehlt die Ausgabe als PDF!

ich stelle daher den passenden (hoffe ich zumindest) Code nochmals rein:


[size=10pt]
Private Sub druckpdf_Click()
    Dim BerichtsName As String
    Dim Filter As String, Pfad As String, Dateiname As String
   
    Pfad = [pfad]
    Dateiname = Pfad & Me!Bericht & ".PDF"
    BerichtsName = "Datenblatt"
    Filter = "[Datensatz] = " & Me![Datensatz]
    DoCmd.OpenReport BerichtsName, acPreview, , Filter
    Reports(BerichtsName).Caption = Me!Bericht
    'Bericht ausdrucken Hochkomma beim nachfolgenden Befehl entfernen
    'DoCmd.PrintOut acPrintAll
    'Bericht als PDF ablegen
    DoCmd.OutputTo acOutputReport, BerichtsName, "PDF", Dateiname
    DoCmd.Close acReport, BerichtsName
End Sub

[/size]


KOPIERE nun den ganzen Code, so wie er ist ins Klick-Ereignis deines Button (klick oben auf '[Auswählen]').
Es sollte nun KEIN Ausdruck erfolgen aber die Ablage des Berichts unter dem angegebenen Dateinamen
im angegebenen Verzeichnis sollte funktionieren.
Steht der Speicherpfad ebenfalls in einem Formularfeld, dann ändere diese Zeile auf...
Pfad = Me![pfad]
Und beachte bitte unbedingt, dass die Pfadangabe in der Form erfolgen MUSS   X:\Verzeichnis\
Titel: Re: Feldinhalt als Dateiname
Beitrag von: carman0103 am Januar 04, 2014, 13:05:45
Genau so funktioniert der Code. Den Pfad habe ich auch in einem Feld und habe die entsprechende Zeile geändert. Klappt einwandfrei.

VIELEN DANK AN ALLE
Titel: Re: Feldinhalt als Dateiname
Beitrag von: database am Januar 04, 2014, 14:24:53
Na also ...  ::) :D
Dann kann ich mich wieder dem Bergisel-Springen widmen  :D 8)