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 splitten

Begonnen von Teufelchen1985, April 11, 2011, 11:37:48

⏪ vorheriges - nächstes ⏩

Teufelchen1985

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

database


Teufelchen1985

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

database

#3
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!

Teufelchen1985

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]

Teufelchen1985

kann mir hier wirklich keiner helfen???  :-[

database

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

Teufelchen1985

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...  ???

DF6GL

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...

Teufelchen1985

@ 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

DF6GL

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.

Teufelchen1985

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!

DF6GL

Hallo,

dann dürfte "Country" in der Tabelle vom Datentyp Text sein und es muß so lauten:

DoCmd.OpenReport strReport, acViewPreview, , _
"Country = '" & strKey & "'"

Teufelchen1985

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!