Hallo zusammen,
ich benötige noch mal eure Hilfe...
Ich habe einen Bericht erstellt, der auf einer Abfrage beruht. Soweit so gut...
Den Berichtsdruck möchte ich gerne über ein Formular steuern.
In diesem Formular gibt es je ein Feld "DatumVon" und "DatumBis", eine Kombi-Box (comADAuswahl ) um einen Benutzer auszuwählen, und einen Button um alle Benutzer auszuwählen.
Die Datumsfelder sollen den Datumsbereich für den Bericht eingrenzen, und die Kombi-Box den Benutzer eingrenzen. Der Button für alle Benutzer soll die Auswahl der Kombi-Box rückgängig machen.
Mein VB-Code sieht bisher so aus:
Private Sub cmdVorschauBer_Click()
On Error GoTo Err_cmdVorschauBer_Click
Dim strSQl As String
Dim stDocName As String
strSQl = "SELECT *" _
& " FROM abfSpesen" _
& " WHERE ADM=" & comADAuswahl _
& " AND Datum Between " & Format(Me!DatumVon, "\#yyyy-mm-dd\#") _
& " AND " & Format(Me!DatumBis, "\#yyyy-mm-dd\#") _
& " ORDER BY ADM, Datum "
CurrentDb.QueryDefs("abfSpesen").Sql = strSQl
stDocName = "Besuchsbericht"
DoCmd.OpenReport stDocName, acPreview
Exit_cmdVorschauBer_Click:
Exit Sub
Err_cmdVorschauBer_Click:
MsgBox Err.Description
Resume Exit_cmdVorschauBer_Click
End Sub
Nur bekomme ich dann immer einen Zirkelbezug auf die Abfrage...
Ich hoffe ihr könnt mir weiter helfen...
HAllo,
"Zirkelbezug auf die Abfrage..."
ist wohl so: die Abfrage bekommt einen SQL-String als Abfrage auf sich selbst zugewiesen....
Wenn schon eine Abfrage "abfragen" , dann sollte der Bericht eine eigene Abfrage erhalten:
Private Sub cmdVorschauBer_Click()
On Error GoTo Err_cmdVorschauBer_Click
Dim strSQl As String
Dim stDocName As String
strSQl = "SELECT *" _
& " FROM abfSpesen" _
& " WHERE ADM=" & Me!comADAuswahl _
& " AND Datum Between " & Format(Me!DatumVon, "\#yyyy-mm-dd\#") _
& " AND " & Format(Me!DatumBis, "\#yyyy-mm-dd\#") _
& " ORDER BY ADM, Datum "
CurrentDb.QueryDefs("abf_Besuchsbericht").Sql = strSQl
stDocName = "Besuchsbericht"
DoCmd.OpenReport stDocName, acPreview
Exit_cmdVorschauBer_Click:
Exit Sub
Err_cmdVorschauBer_Click:
MsgBox Err.Description
Resume Exit_cmdVorschauBer_Click
End Sub
Warum nicht gleich so:
Private Sub cmdVorschauBer_Click()
On Error GoTo Err_cmdVorschauBer_Click
Dim strSQl As String
Dim stDocName As String
strSQl = " ADM=" & Me!comADAuswahl _
& " AND Datum Between " & Format(Me!DatumVon, "\#yyyy-mm-dd\#") _
& " AND " & Format(Me!DatumBis, "\#yyyy-mm-dd\#")
stDocName = "Besuchsbericht"
DoCmd.OpenReport stDocName, acPreview,,strSQl
Exit_cmdVorschauBer_Click:
Exit Sub
Err_cmdVorschauBer_Click:
MsgBox Err.Description
Resume Exit_cmdVorschauBer_Click
End Sub
wobei die Sortierung im Bericht vorgenommen werden sollte.
Hallo DF6GL,
vielen Dank für den Code! So funktioniert das ganze echt Prima!!!