Supportnet / Forum / Datenbanken
Datumsbereich auswaehlen zur Berichterstellung unter Access
Frage
hallo..
habe eine datenbank unter access erstellt und nun soll zeitlich variabel der jeweilige bericht einer bestimmten abfrage ausgeworfen werden, also fuer einen bestimmten datumsbereich. der user soll vor der berichtserstellung das anfangs- und enddatum festlegen und dementsprechend der bericht erstellt werden.
wie kann ich dies realisieren? ueber ereignisprozeduren? das problem ist nur, ich kenne mich mit der VBA programmierung nicht aus...
hoffe, es kann mir, einem totalen laien auf diesem gebiet, jemand helfen...
danke
katja
Antwort 1 von RalfH
Guten Morgen Katja,
Erstelle eine Abfrage mit allen relevanten Daten die so benötigt werden.
Im Feld Datum schreibst Du unter Kriterien:
Diese Abfrage nimmst Du als Grundlage für einen Bericht.
Damit wird jedesmal wenn der Bericht aufgerufen wird, das Anfangs-, sowie das Enddatum abgefragt.
Gruß Ralf
Erstelle eine Abfrage mit allen relevanten Daten die so benötigt werden.
Im Feld Datum schreibst Du unter Kriterien:
Zitat:
>=[Bitte tragen Sie das Anfangsdatum ein] Und <=[Bitte tragen Sie das Enddatum ein]
>=[Bitte tragen Sie das Anfangsdatum ein] Und <=[Bitte tragen Sie das Enddatum ein]
Diese Abfrage nimmst Du als Grundlage für einen Bericht.
Damit wird jedesmal wenn der Bericht aufgerufen wird, das Anfangs-, sowie das Enddatum abgefragt.
Gruß Ralf
Antwort 2 von Marie
Hier schau mal, aber bitte aufpassen, bei mir werden alle Datensätze vor diesem Datum gelöscht. Also alles zwischen then und endif umschreiben. Habe es Dir trotzdem dringelassen, damit Du siehst wie es funktioniert.
Gruß Marie
Public Static Function fkt_suchen()
On Error GoTo fkt_suchen_Err
Dim SQL As String
Dim Antwort As String
Beginne:
Antwort = InputBox("Bitte geben Sie das Datum ein (Bsp. 25.06.2007)" _
& " bis zu dem (einschließlich) alle blablabla", "blablabla:" _
& " blablabla", "31.07.2006")
If Antwort <> "" Then
If MsgBox("Sollen wirklich alle blablabla, die vor dem" & vbcrlf & vbcrlf & " " & Antwort & vbcrlf & vbcrlf _
& " blablabla werden?", vbYesNo + vbDefaultButton2, "blablabla:" _
& " blablabla bis " & Antwort & " blablabla?") = vbYes Then
SQL = "DELETE DISTINCTROW DeineTabelle.*, DeineTabelle.Abdatum FROM DeineTabelle" _
& " WHERE (((DeineTabelle.Abdatum)< DateValue('" & Antwort & "')))"
CurrentDb.Execute SQL, dbFailOnError
End If
End If
fkt_suchen_Exit:
Exit Function
fkt_suchen_Err:
If err = 13 Then 'Datentypen unverträglich
MsgBox "Die gewählten blablabla." & vbcrlf _
& "Sie haben einen Fehler bei der Datumseingabe gemacht.", vbCritical, "blablabla: Bitte geben Sie das Datum korrekt ein."
Resume Beginne
Else
MsgBox Error$, vbCritical, "blablabla: Fehler in fkt fkt_suchen Nr." & Str$(err)
End If
Resume fkt_suchen_Exit
End Function
Gruß Marie
Public Static Function fkt_suchen()
On Error GoTo fkt_suchen_Err
Dim SQL As String
Dim Antwort As String
Beginne:
Antwort = InputBox("Bitte geben Sie das Datum ein (Bsp. 25.06.2007)" _
& " bis zu dem (einschließlich) alle blablabla", "blablabla:" _
& " blablabla", "31.07.2006")
If Antwort <> "" Then
If MsgBox("Sollen wirklich alle blablabla, die vor dem" & vbcrlf & vbcrlf & " " & Antwort & vbcrlf & vbcrlf _
& " blablabla werden?", vbYesNo + vbDefaultButton2, "blablabla:" _
& " blablabla bis " & Antwort & " blablabla?") = vbYes Then
SQL = "DELETE DISTINCTROW DeineTabelle.*, DeineTabelle.Abdatum FROM DeineTabelle" _
& " WHERE (((DeineTabelle.Abdatum)< DateValue('" & Antwort & "')))"
CurrentDb.Execute SQL, dbFailOnError
End If
End If
fkt_suchen_Exit:
Exit Function
fkt_suchen_Err:
If err = 13 Then 'Datentypen unverträglich
MsgBox "Die gewählten blablabla." & vbcrlf _
& "Sie haben einen Fehler bei der Datumseingabe gemacht.", vbCritical, "blablabla: Bitte geben Sie das Datum korrekt ein."
Resume Beginne
Else
MsgBox Error$, vbCritical, "blablabla: Fehler in fkt fkt_suchen Nr." & Str$(err)
End If
Resume fkt_suchen_Exit
End Function
Antwort 3 von Marie
PS: Natürlich geht es auch eleganter, dass Du gleich prüfst, ob die Eingabe ein Datum ist und bei Fehler 13 nicht in die Fehlerbehandlung läufst, aber das hier tuts auch.
Gruß Marie
Gruß Marie
Antwort 4 von kfraeger
dankeschoen fuer die infos
Antwort 5 von Marie
na ja, wäre nett zu berichten was geholfen hat, aber nach mehr als einem halben jahr weiss eh keiner mehr was das gewesen ist.
:-(
Gruß marie
:-(
Gruß marie