Neuigkeiten:

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

Mobiles Hauptmenü

Bericht als PDF automatisiert am Laufwerk speichern

Begonnen von michael45, Oktober 29, 2018, 23:45:24

⏪ vorheriges - nächstes ⏩

michael45

Hallo,
habe da ein Problem und werde langsam  >:(
Habe folgenden Code:
Private Sub Alle_Kunden_als_PDF_speichern_Click()
Dim strSQL As String
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim Pfad As String, strWhere As String
'Dim strWhere As String
Set db = CurrentDb
strSQL = "SELECT distinct [KD-NR]FROM [ALLE_KD_Druck_qer]"
Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)

Do Until rs.EOF
Pfad = "D:\PDF-Kunde\" & Me.KD_NR & " " & Me.Nachname & " " & Me.Vorname & ".pdf"
'strWhere = "[KD-NR] = " & rs![KD-NR]
'DoCmd.OpenReport "ALLE_KD_PDF_ber", acViewPreview, , strWhere, acHidden
DoCmd.OpenReport "ALLE_KD_PDF_ber", acViewPreview, , "[KD-NR] = " & rs![KD-NR], acHidden
DoCmd.OutputTo acOutputReport, "ALLE_KD_PDF_ber", acFormatPDF, "D:\PDF-Kunde\" & Me.KD_NR & " " & Me.Nachname & " " & Me.Vorname & ".pdf", False
DoCmd.Close acReport, "ALLE_KD_PDF_ber"
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set db = Nothing

End Sub

das Problem der Pfad zum abspeichern bleibt immer der gleiche  :(

ebs17

Zuerst solltest Du in der SQL-Anweisung das Leerzeichen vor dem FROM nicht vergessen. Da würde ich mit Verwendung der Anweisung (beim Erzeugen des Recordsets) bereits einen Fehler erwarten.

Zitatdas Problem der Pfad zum abspeichern bleibt immer der gleiche
Ja, Du nimmst die Angaben dafür vom aktuellen Datensatz im Formular ( Me... ), und da der nicht geändert wird, muss es ja gleich bleiben.
Nicht beschweren, wenn der Code das tut, was man geschrieben hat.
Mit freundlichem Glück Auf!

Eberhard

michael45

erst einmal Danke  :)
ich bin schon ein paar Jahre raus  ;)
wie und wo soll ich die Daten abfragen?
Damit der Pfad geht

michael45

Habe es mit dem Pfad hin bekommen  :)
Habe jetzt noch ein letztes Problem:
HF und UF wird in der Berichtsanzeige richtig angezeigt,
aber wenn ich es dann als PDF speichern lasse, sind die UF nicht enthalten.
Wo liegt der Fehler?
Private Sub Alle_Kunden_als_PDF_speichern_Click()
Dim strSQL As String
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim Pfad As String
Dim i As Integer
Dim KDNR As Variant
Dim Name As Variant
Dim Vorname As Variant

i = MsgBox _
("Wenn Sie jetzt auf OK klicken werden alle Kundendaten als PDF gespeichern! Dies kann nicht unterbrochen werden und kann sehr lange dauern", _
vbOKCancel + vbExclamation, _
"Es werden alle Kundendaten als PDF gespeichert")
If i = vbOK Then
DoCmd.GoToRecord , , acFirst
'Dim strWhere As String
Set db = CurrentDb
strSQL = "SELECT [KD-NR],[Name],[Vorname] FROM [PDF_ALLE_KD_Druck_qer]"
Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)

Do Until rs.EOF

KDNR = rs![KD-NR]
Name = rs![Name]
Vorname = rs![Vorname]

Pfad = "D:\PDF-Kunde\" & Name & " " & Vorname & " " & KDNR & ".pdf"
'strWhere = "[KD-NR] = " & rs![KD-NR]
'DoCmd.OpenReport "ALLE_KD_PDF_ber", acViewPreview, , strWhere, acHidden
DoCmd.OpenReport "ALLE_KD_PDF_ber", acViewPreview, , "[KD-NR] = " & rs![KD-NR], acHidden
DoCmd.OutputTo acOutputReport, "ALLE_KD_PDF_ber", acFormatPDF, Pfad, False
DoCmd.Close acReport, "ALLE_KD_PDF_ber"
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set db = Nothing
ElseIf i = vbCancel Then
        '...
    End If
End Sub

michael45

Kann mir denn keiner helfen?
Ich finde keinen Ansatz im Web  :-\
Es sind im Bericht 10 kleine UB enthalten.
Wenn ich einem Kunden als PDF speichere geht das perfekt,
aber mit der Database irgendwie nicht, obwohl es im geöffneten Bericht richtig steht

PhilS

Zitat von: michael45 am November 01, 2018, 13:25:42
Es sind im Bericht 10 kleine UB enthalten.
Wenn ich einem Kunden als PDF speichere geht das perfekt,
aber mit der Database irgendwie nicht, obwohl es im geöffneten Bericht richtig steht
Das ist als Problembeschreibung schlecht nachzuvollziehen.

Ich würde, nur zwecks Analyse, erstmal zwei Dinge ändern.

  • Entferne das acHidden, wenn du den Bericht öffnest, damit du schon in Access sehen kannst ob die Darstellung korrekt ist, oder nicht.
  • Plaziere vor dem DoCmd.Close ... eine MsgBox, damit dort der Code für jeden Kunden anhält und der Bericht nicht sofort wieder geschlossen wird.
Dann beobachte mal wann/wie/wo (bei welchen Kunden) hier ein Problem auftritt.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Lachtaube

... und ein Stop-Befehl vor dem Pdf-Erzeugen oder vor dem Schließen der Vorschau gebietet Dir auch Zeit für die Betrachtung am Bildschirm. Mit der Taste F5 geht es dann weiter in die nächste Runde.
Grüße von der (⌒▽⌒)

michael45

Hallo,
habe "acHidden" entfernt und siehe da  ;D es geht, schon sehr komisch  ::)
gibt es vielleicht eine andere Möglichkeit um den Bericht auszublenden beim PDF erstellen?

PhilS

Zitat von: michael45 am November 01, 2018, 16:50:46
habe "acHidden" entfernt und siehe da  ;D es geht, schon sehr komisch  ::)
gibt es vielleicht eine andere Möglichkeit um den Bericht auszublenden beim PDF erstellen?
Ich denke nicht, dass das acHidden die Ursache für deine Probleme war.
Ich würden jetzt mal acHidden wieder ergänzen und dann anstatt dem Report die jeweils exportierte PDF anschauen. - Kommt es wieder zu Problemen?
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor