Hallo zusammen,
ich muss mind. einmal im Monat einen Bericht für 30 Länder erstellen.
Momentan mache ich es manuell:
- Land im Kombifeld aussuchen
- Button zur Erstellung des Berichtes klicken
- Bericht als Pdf mit dem Landes-Kürzel abspeichern (mit Hilfe eines Pdf-Druckers)
- Pdf im Intranet (auf die jeweilige Seite des Landes) uploaden
Nun möchte ich das ganze gerne automatisieren (zumindest die ersten 3 Schritte). Bin mit google bisher leider nicht wirklich fündig geworden.
Ich bedanke mich bereits im Voras recht herzlich!
Teufelchen
Hallo,
vielleicht hilft dir das weiter:
http://www.dbwiki.de/upload/AccSamplePDFWriter.zip (http://www.dbwiki.de/upload/AccSamplePDFWriter.zip)
HTH
Hallo database,
leider ist es nicht wirklich hilfreich, weil hier der Bericht ja nicht gesplittet wird...
ich habe bereits folgenden Code gefunden, weiß leider nicht, wie ich diesen "verwenden" muss.
Dim rs As Recordset
Dim strReport As String
Dim strKey As String
strReport = "NameDeinesBerichts"
Set rs = CurrentDb.OpenRecordset("NameDerAbfrage", dbOpenDynaset)
With rs
Do While Not .EOF
strKey = "IrgendeineID = " & !ID
DoCmd.OpenReport strReport, acNormal, , strKey
.MoveNext
Loop
End With
Set rs = Nothing
kann ich den Bericht verwenden, denn ich bereits schon für die Einschränkung mit Kombifeldern nutze, oder muss ich einen separaten erstellen und auch die Abfrage ohne jegliche Einschränkung?
was genau ist mit der Abfrage gemeint, die auf der der Bericht basiert???
Lieben Dank
Teufelchen
Hallo,
der Code passt nicht.
Zitatwas genau ist mit der Abfrage gemeint, die auf der der Bericht basiert
Ein Bericht wird entweder auf einer Tabelle oder einer Abfrage aufgesetzt.
In deinem Fall ändern sich die Daten des Berichts je nach gewünschtem Land.
Diese Auswahl erfolgt in einem Formular, wahrscheinlich per Auswahl in einem Kombifeld.
Eine Abfrage, welche die Daten für den Bericht liefert erhält dadurch ein Kriterium um nur jene Daten zu liefern, die dem Ausgewählten Land entsprechen.
Somit wird ein Bericht nicht gesplittet sondern pro Aufruf mit anderen Daten versorgt - was ja nicht das Gleiche ist.
Wenn die Automatisierung so weit gehen soll, dass immer Berichte für ALLE Länder ausgedruckt werden sollen, dann würde sich ein Schleifenkonstrukt dafür anbieten.
Mangels Kenntnis deiner Situation (DB, Tabellennamen Abfragen Berichte, etc.) ist es aber sehr schwer hier detaillierte Anleitungen zu geben, da das recht shnell zu Problemen fürhren würde.
DoCmd.OpenReport strReport, acNormal, , strKey...im unten dargestellten Code würde z.B. bewirken, dass ein Bericht mit der Einschränkung auf die übergebene
ID (strKey) geöffnet und an den eingestellten Standarddrucker gesendet wird.
Das ließe sich jetzt so umlegen, dass die Abfrage immer alle Daten liefert, aber beim Öffnen des Berichts nur die
Daten angezeigt werden, deren Länder-ID dem strKey entspricht - wenn sich das in dein Konzept so einflechten ließe.
Mehrere Berichte als PDF auszugeben und unter eigenen Namen zu speichern ist keine triviale Angelegenheit und daher leider nicht so mal auf die Schelle nebenbei mit 5 Codezeilen zu regeln!
Hallo,
so, habe nun endlich Zeit gefunden, um eine Beispiel-Datenbank zu erstellen.
Wie gesagt momentan muss ich Ctry auswählen, um einen report pro Land zu erhalten, welchen ich dann per PDF-Drucker als pdf erstelle und dann den Ländern aufs Intranet packe.
Nun möchte ich, dass zumindest das erstellen der Pdfs automatish läuft.
der Name der erstellen Datei sollte folgendermaßen aussehen:
yyyymmdd_NSO & Pre-Investments_Landeskürzel
z.B. 20110413_NSO & Pre-Investments_Ctry 1
Hoffe, dass es so einfacher ist zu verstehen, was genau ich haben möchte.
Lieben Dank
Teufelchen
[Anhang gelöscht durch Administrator]
kann mir hier wirklich keiner helfen??? :-[
Hallo,
sicher kann ich dir Tipps geben. ;)
unter folgender URL findest du ein Beispiel zum Download, ohne PDF-Printer!
http://www.lebans.com/reporttopdf.htm (http://www.lebans.com/reporttopdf.htm)
danke. aber das ist eigenltich nicht das eigenltiche Problem, denn einen PDf Drucker habe ich sowieso installiert.
Es geht eher darum, dass die Berichte für jedes Land separat mit einem einzigen Knopf erstellt werden. Diese Funktion konnte ich in der Beispieldatenbank leider nicht finden. Oder habe ich nur schlecht gaschaut... ???
Hallo,
Du mußt halt mittels einem (evtl gefiltertem) Recordset die Country-Tabelle durchlaufen und für jeden DS unter Angabe der Country-ID als Kriterium den Bericht drucken...
@ DF6GL: an sich ist mir schon klar, was im Hintergrund passieren muss, nur weiß ich leider nicht wie ich es in VBA umwandele... :(
Habe noch etwas Zeit in die Internetsuche investiert, und folgenden Code gefunden, nur scheint da noch ein Fehler drin zu sein.... Vielleicht könnt ihr auch den mal kurz anschuen???
Private Sub Befehl364_Click()
Dim rs As Recordset
Dim strReport As String
Dim strKey As String
strReport = "B-NSO & Pre-Investments"
Set rs = CurrentDb.OpenRecordset("t-countries", dbOpenDynaset)
With rs
Do While Not .EOF
strKey = !Country
Path = "C:\Documents and Settings\anna.burgardt\Desktop\" & Country & "_" & Date & ".snp"
'der Pfad mit der Personalnummer und dem aktuellen Datum als Dateinamen.
DoCmd.OpenReport strReport, acViewPreview, , _
"Country = " & strKey
DoCmd.OutputTo acReport, strReport, "Snapshot Format", _
Path, False, ""
DoCmd.Close acReport, strReport
Loop
End With
End Sub
Ja, ist die Erstellung einer snp, aber das wäre schon mal ein Anfang!
Lieben Dank
Teufelchen
Hallo,
'
Dim rs As DAO.Recordset
strReport = "B-NSO & Pre-Investments"
'
'
Set rs = CurrentDb.OpenRecordset("t-countries", dbOpenSnapshot)
'
'
'
Path = "C:\Documents and Settings\anna.burgardt\Desktop\" & strKey & "_" & Date & ".snp"
'
'
'
DoCmd.Close acReport, strReport ' und diese Zeile ist vermutlich überflüssig.
.Movenext
Loop
'
'
End With
rs.Close
Set rs= Nothing
End Sub
btw: Auf Sonder- und Leerzeichen in Namen (am Besten auch in Dateinamen!) dringend verzichten.
Hallo DF6GL,
ich würde auf SOnder- und Leerzeichen ja gerne verzichten, aber die Datenbank ist mittlerweile sooo groß (und von mir nicht von Anfang an entwickelt), dass es Tage dauern würde dies nun überall zu ändern.
Wenn ich den Code ändere, wie von dir dargestellt bekomme ich die folgende Fehlermeldung:
Laufzeitfehler '3075':
Syntaxfehler (fehlender Operator) in Abfrageausdruck '(Country)= Ctry 1)'
und die folgenden Zeilen werden markiert:
DoCmd.OpenReport strReport, acViewPreview, , _
"Country = " & strKey
Lieben Dank!
Hallo,
dann dürfte "Country" in der Tabelle vom Datentyp Text sein und es muß so lauten:
DoCmd.OpenReport strReport, acViewPreview, , _
"Country = '" & strKey & "'"
Snapshots funktionieren nun prima! vielen lieben Dank!
Nun muss ich es nur noch hinkriegen, dass pdfs erstellt werden...
Aber soweit noch mal ein herzlichen Dank!