Hallo liebe Access-Experten,
ich habe ein Problem bei der Generierung von PDF-Drucken eines Berichts, der als Blanko-Prüfungsbogen (als Ersatzblatt) keine Daten um Kopf enthalten soll. Ebenfalls kann anhand des selben Berichts auch eine Version mit den Angaben zum Prüfling im Kopf generiert werden, was sehr gut funktioniert (auch beim problematischen Sonderfall). Ich finde den Fehler leider nicht... Mit "Where 1=2" sollte die Auswahl zurückgesetzt werden, was aber in dem Fall des Bogens "Pruefung_5_Schreibblatt" (Sonderfall) nicht funktioniert. Bei allen anderen Berichten klappt die Generierung der Blankobögen.
Ich habe im folgenden zuerst den Code zur Generierung der PDF-Prüfungsbögen und dann den Code zu der Blanko-Version des Prüfbogens
angefügt:
Generierung des PDF-Drucks der Prüfungsbögen als Blankoversion:
Private Sub Blanko_Klausur_pdf_Click() ' Genrierung eines Blanko-Pruefungsbogens als PDF-Datei
On Error GoTo Fehler
Dim stDocName As String, strSQL As String
If IsNull(Kblanko) Then GoTo Fehler Else GoTo Pruefung
Pruefung:
If Me!Kblanko = "5_Aufgabenblatt" Then GoTo AufgabenblattBlanko Else GoTo BlankoDruck_pdf
AufgabenblattBlanko:
strSQL = "SELECT INT_Pruefungsboegen.Etagennr, INT_Pruefungsboegen.Durchgangtxt, INT_Pruefungsboegen.Stud_ID, INT_Pruefungsboegen.StartPruefung, INT_Pruefungsboegen.Nachname, INT_Pruefungsboegen.Vorname FROM INT_Pruefungsboegen Where 1=2"
DoCmd.OutputTo acOutputReport, "Pruefung_5_Schreibblatt", acFormatPDF, CurrentProject.Path & "\Pruefung-" & Me!Kblanko & "_" & "Blanko" & Format(Date, "\_yyyy-mm-dd") & ".pdf"
Exit Sub
BlankoDruck_pdf:
strSQL = "SELECT INT_Pruefungsboegen.Etagennr, INT_Pruefungsboegen.Durchgangtxt, INT_Pruefungsboegen.Stud_ID, INT_Pruefungsboegen.StartPruefung, INT_Pruefungsboegen.Nachname, INT_Pruefungsboegen.Vorname FROM INT_Pruefungsboegen Where 1=2"
stDocName = "abf_Pruefung_" & Me!Kblanko
CurrentDb.QueryDefs(stDocName).SQL = strSQL
DoCmd.OutputTo acOutputReport, "Pruefung_" & Me!Kblanko, acFormatPDF, CurrentProject.Path & "\Pruefung-" & Me!Kblanko & "_" & "Blanko" & Format(Date, "\_yyyy-mm-dd") & ".pdf"
Exit Sub
Fehler:
MsgBox "Bitte wählen Sie eine Prüfungsnummer aus der vorgegebenen Werteliste aus! Ggf. geöffnete PDF-Dateien schließen."
Exit Sub
End Sub
Generierung Blanko-Version des Prüfbogens
Private Sub Seitenkopfbereich_Format(Cancel As Integer, FormatCount As Integer)
If IsNull(Me.Stud_ID) Then txtPrueferID.Visible = False
If IsNull(Me.Stud_ID) Then txtPrueferID2.Visible = False
If IsNull(Me.Stud_ID) Then txtLfdNr.Visible = False
If IsNull(Me.Stud_ID) Then Me.bezLfdNr.Visible = False
If IsNull(Me.Stud_ID) Then Me.txtBewerbername.Visible = False
If IsNull(Me.Stud_ID) Then Me.bezStartStation.Visible = False
If IsNull(Me.Stud_ID) Then Me.LiNachname.Visible = True Else Me.LiNachname.Visible = False
If IsNull(Me.Stud_ID) Then Me.LiVorname.Visible = True Else Me.LiVorname.Visible = False
End Sub
Private Sub Seitenfußbereich_Format(Cancel As Integer, FormatCount As Integer)
If IsNull(Me.Stud_ID) Then Me.txtVersion.Caption = "pruefbogen-5-schreibblatt_blanko"
End Sub
[code=vb]Private Sub Seitenkopfbereich_Format(Cancel As Integer, FormatCount As Integer)
If IsNull(Me.Stud_ID) Then txtPrueferID.Visible = False
If IsNull(Me.Stud_ID) Then txtPrueferID2.Visible = False
If IsNull(Me.Stud_ID) Then txtLfdNr.Visible = False
If IsNull(Me.Stud_ID) Then Me.bezLfdNr.Visible = False
If IsNull(Me.Stud_ID) Then Me.txtBewerbername.Visible = False
If IsNull(Me.Stud_ID) Then Me.bezStartStation.Visible = False
If IsNull(Me.Stud_ID) Then Me.LiNachname.Visible = True Else Me.LiNachname.Visible = False
If IsNull(Me.Stud_ID) Then Me.LiVorname.Visible = True Else Me.LiVorname.Visible = False
End Sub
Private Sub Seitenfußbereich_Format(Cancel As Integer, FormatCount As Integer)
If IsNull(Me.Stud_ID) Then Me.txtVersion.Caption = "pruefbogen-5-schreibblatt_blanko"
End Sub
Wo steckt der Fehler?
Ich wäre sehr dankbar über hilfreiche Tipps.
Viele Grüße
Claudia[/code]
Hallo,
es fehlt die Zuweisung des SQL-Strings an die SQL-Eigenschaft der Berichtsabfrage....
Zudem dürfte der Code nach der ersten "Fehler"-Marke durch fehlerhaftes Kopieren "verhunzt" sein...
Hallo DF6GL,
vielen Dank für den Tipp :-)
Ich hab nun mal das ergänzt:
AufgabenblattBlanko:
strSQL = "SELECT INT_Pruefungsboegen.Etagennr, INT_Pruefungsboegen.Durchgangtxt, INT_Pruefungsboegen.Stud_ID, INT_Pruefungsboegen.StartPruefung, INT_Pruefungsboegen.Nachname, INT_Pruefungsboegen.Vorname FROM INT_Pruefungsboegen Where 1=2"
stDocName = "Pruefung_5_Schreibblatt"
CurrentDb.QueryDefs(stDocName).SQL = strSQL
DoCmd.OutputTo acOutputReport, "Pruefung_5_Schreibblatt", acFormatPDF, CurrentProject.Path & "\Pruefung-" & Me!Kblanko & "_" & "Blanko" & Format(Date, "\_yyyy-mm-dd") & ".pdf"
Exit Sub
Leider erhalte ich die Fehlermeldung zur Sprungmarke "Fehler:".
Was habe ich an der Stelle falsch gemacht? Wie müsste der korrekte Code aussehen.
Ich hoffe, ich kann nochmals Tipps bekommen.
VG
Claudia
Hallo,
Wie lautet denn die Fehlermeldung?
Das sollte noch geändert werden:
If IsNull(Me!Kblanko) Then GoTo Fehler Else GoTo Pruefung
Und solche Goto-Sprünge sind auch nicht das Gelbe vom Ei...
Ansonsten benenne "Fehler" mal um in z. B. "MyErr". Schreibe zudem "Option Explicit" in JEDEN Modulkopf (falls noch nicht geschehen) und kompiliere die DB im VBA_Editor unter "Debuggen/Kompilieren"
Hallo,
danke, habe die Tipps umgesetzt.
Das ändert aber leider nichts daran, dass es noch nicht funktioniert. :(
Brauche wohl noch etwas mehr Unterstützung. Hoffe das wäre mögl. ohne dass sich an meiner momentanen "Unfähigkeit" die Dinge richtig zu erkennen angestoßen wird... :)
Ich weiß das mit den GoTo Srüngen. Bei der damaligen Hilfe hier im Forum wurde mir dies jedoch als Lösung empfohlen. Ich brauche jetzt erstmal einen funktionierenden Code bevor es im Weiteren um die Verbesserung geht.
Ich hoffe jemand kann mir sagen, was im Code nicht stimmt und wie es richtig wäre.
VG
Claudia
Hallo,
dann beantworte doch auch meine Frage...
Sorry, aber ich kann deine Frage nicht erkennen.
Den Kopierten Code hatte ich bereits korrigiert.
Bitte nochmal stellen.
Die Frage war, "wie lautet die Fehlermeldung"
Es kommt keine Fehlermeldung von Access selbst.
Der Code spring an die Stelle jetzt "MyErr" -> MsgBox "Bitte wählen Sie eine Prüfungsnummer aus der vorgegebenen Werteliste aus! Ggf. geöffnete PDF-Dateien schließen."
Ansonsten passiert nicht weiter ???
Schon mal den Code zeilenweise ausgeführt und ermittelt, aus welcher Zeile er in die Fehlerroutine läuft ?
Hallo,
wirf auch mal die Zeile
On Error GoTo Fehler
heraus...
Danke für den Tipp :)
Nachdem ich nun On Error GoTo Fehler entfernt habe, läuft der Code durch und die Blanko-Bögen werden personalisiert als PDF abgelegt. Wie kann das denn sein?
Tja, und so wird nun der Druckdialog angezeigt aber nichts passiert...
AufgabenblattBlanko:
strSQL = "SELECT INT_Pruefungsboegen.Etagennr, INT_Pruefungsboegen.Durchgangtxt, INT_Pruefungsboegen.Stud_ID, INT_Pruefungsboegen.StartPruefung, INT_Pruefungsboegen.Nachname, INT_Pruefungsboegen.Vorname FROM INT_Pruefungsboegen Where 1=2"
stDocName = "abf_Pruefung_" & Me!Kblanko
CurrentDb.QueryDefs(stDocName).SQL = strSQL
DoCmd.OutputTo acOutputReport, "Pruefung_" & Me!Kblanko, acFormatPDF, CurrentProject.Path & "\Pruefung-" & Me!Kblanko & "_" & "Blanko" & Format(Date, "\_yyyy-mm-dd") & ".pdf"
Exit Sub
???
Hm,
muss nicht erst ein Bericht geöffnet werden, der dann nach PDF ausgegeben wird und dann wieder geschlossen werden muss, so wie z.B.:
DoCmd.OpenReport "Bericht1", acViewReport
DoCmd.OutputTo acOutputReport, "Bericht1", acFormatPDF, Speicherort & "Test.pdf", False
DoCmd.Close acReport, "Bericht1", acSaveNo
Hallo,
es ist eben so, dass es bei den weiteren Funktionen genau so klappt....
Ich probiere das jetzt mal. Danke.
... das macht es leider auch nicht besser :( ???
Ich kann da auch nicht so ganz unterstützen, da meine Access-Version noch kein PDF unterstützt bei outputto.
::)
In einem anderen Forum habe ich dann noch gefunden, dass der Bericht praktisch "unsichtbar" geöffnet ist. Aber ich kann Dir da nicht weiterhelfen...... :-[
Leider kein Effekt... ???
Hallo,
Lad die db mal hier hoch... (Zippen!).
Was passiert, wenn die Berichtsabfrage allein geöffnet wird?
PS: Nur bei Printout muss der Bericht geöffnet sein...
Hallo,
ich werd die DB vorbereiten und hier hoch laden...
Hmm, "Was passiert, wenn die Berichtsabfrage alleine geöffnet wird?".... Ich weiß jetzt nicht wie und wonach ich da gucken muss ???
VG
Claudia
Hallo,
jetzt aber Claudia... :o
Es gibt doch im Datenbankfenster/Abfragen eine solche Abfrage entspr. dem Zusammenbau: "abf_Pruefung_" & Me!Kblanko
Die öffnest Du mit einen Doppelklick darauf.
Danke DF6GL.
Das weiß ich wohl. :D
Gut, wenn ich die Abfrage alleine öffne dann ist da noch der Wert der letzten Auswahl für den Eintrag der Klausurnummer in Bericht eingetragen bzw. "Where 1 =2 "eingetragen.
Ich habe nun die DB angehängt. Allerdings musste ich vieles an Code raus schmeißen und generell alles etwas ummodeln, damit keine Rückschlüsse auf originale Berechnungen nachvollzogen werden können. Im letzten Schritt ist es mir darum nicht gelungen die Fehlersituation ganz genau wie bei der Originalen DB herzustellen.
Aber im Kern geht es um das selbe Problem beim Ausdrucken der Bewertungsbögen.
Ich würde mich sehr über Tipps freuen. :)
VG
Claudia
[Anhang gelöscht durch Administrator]
Hallo,
so wird das nix.. Woher soll man feststellen, welcher Fehler in der Originalversion auftauchen und nicht nur in der Demo..
Allgemein hagelt es von Fehlermeldungen beim Kompilieren. Dringender Tipp: In JEDEN Modulkopf Option Explicit einbauen und die gesamte DB kompilieren. Bei Referenzen auf eigenerstellte Objekte Me! statt Me. verwenden.
Das sieht dann beispielsweise so aus:
If IsNull(Me!Stud_ID) Then Me!txtPrueferID.Visible = False
If IsNull(Me!Stud_ID) Then Me!txtPrueferID2.Visible = False
If IsNull(Me!Stud_ID) Then Me!txtLfdNr.Visible = False
If IsNull(Me!Stud_ID) Then Me!bezLfdNr.Visible = False
If IsNull(Me!Stud_ID) Then Me!txtStudName.Visible = False
If IsNull(Me!Stud_ID) Then Me!LiNachname.Visible = True Else Me!LiNachname.Visible = False
If IsNull(Me!Stud_ID) Then Me!LiVorname.Visible = True Else Me!LiVorname.Visible = False
wobei in besagten Bericht das Feld "txtPrueferID" nicht vorhanden ist und (auch) deswegen der Bericht nicht gedruckt werden kann.
O. st. Code könnte etwas performanter und übersichtlicher so geschrieben werden:
Private Sub Seitenkopfbereich_Format(Cancel As Integer, FormatCount As Integer)
If IsNull(Me!Stud_ID) Then
Me!txtPrueferID.Visible = False
Me!txtPrueferID2.Visible = False
Me!txtLfdNr.Visible = False
Me!bezLfdNr.Visible = False
Me!txtStudName.Visible = False
Me!LiNachname.Visible = True
Me!LiVorname.Visible = True
Else
Me!LiNachname.Visible = False
Me!LiVorname.Visible = False
End If
End Sub
Hallo,
und vielen dank für die Korrekturhinweise! :)
Leider klappt der Druck der Blanko-Bögen noch nicht für alle Berichte. In den zu den Berichten gehörenden Abfragen greift die VBA-Filterung anscheinend korrekt. Nur wird der Druck ins PDF nicht durchgeführt.
Wenn ich kompiliere erhalte ich keine Fehlermeldungen.
Habe das alles in der Original DB eingefügt und davon eine um einige Inhalte reduzierte Version erstellt und hier hoch geladen. Nun ist die Fehlersituation in der originalen und reduzierten Situation die Selbe.
Ich finde den Fehler leider nicht. ???
Ich wäre sehr dankbar, wenn ihr nochmals in die angehängte DB reinschauen würdet.
VG
Claudia
[Anhang gelöscht durch Administrator]
Hallo,
Verweise im Code auf fehlende Textfelder entfernen.
alle Felder aus der Abfrage im Bericht einbauen und ggfls. unsichtbar setzen, wenn damit nur "weitergerechnet" wird.
In Steuerelementformeln keine Hochkommata in Ausdrücken verwenden (außer sie sind Bestandteil eines Literalstrings)
Fragwürdige Additonen von Zahlen, die als Text in der Tabelle deklariert wurden.
Der Bericht wird nur dann als PDF exportiert, wenn keinerlei Fehlersituationen auftreten
[Anhang gelöscht durch Administrator]
Vielen Dank :),
ich versuche mal alles umzusetzen.
Wenns klappt schleiße ich das Thema noch...
VG