Neuigkeiten:

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

Mobiles Hauptmenü

VBA-Code zum Zurücksetzen einer Auswahl funktioniert nicht

Begonnen von claudia2324, Juli 25, 2013, 11:12:32

⏪ vorheriges - nächstes ⏩

claudia2324

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]

DF6GL

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

claudia2324

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

DF6GL

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"

claudia2324

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


claudia2324

Sorry, aber ich kann deine Frage nicht erkennen.

Den Kopierten Code hatte ich bereits korrigiert.

Bitte nochmal stellen.

69bruno

If Brain <= requestoutofPost then
  PostonForum "Ich verstehe Dein Problem nicht....."
Else
  PostonForum "Denk erst mal über die Normalisierung nach......"
End If

claudia2324

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

69bruno

Schon mal den Code zeilenweise ausgeführt und ermittelt, aus welcher Zeile er in die Fehlerroutine läuft ?
If Brain <= requestoutofPost then
  PostonForum "Ich verstehe Dein Problem nicht....."
Else
  PostonForum "Denk erst mal über die Normalisierung nach......"
End If


claudia2324

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?


claudia2324

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


???

69bruno

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
If Brain <= requestoutofPost then
  PostonForum "Ich verstehe Dein Problem nicht....."
Else
  PostonForum "Denk erst mal über die Normalisierung nach......"
End If

claudia2324

Hallo,

es ist eben so, dass es bei den weiteren Funktionen genau so klappt....

Ich probiere das jetzt mal. Danke.