Supportnet / Forum / Datenbanken
Bericht mit Formular öffnen
Frage
Hilfe bitte !!!
Ich brauch dringend Eure Unterstützung ich kriegs nicht hin. Habe Access 2003
Also ich habe ein Formular. Diese Formular enthält 2 ungebunde Steuerelemente: [b]Anfangsdatum[/b] und [b]Enddatum[/b] sowie 2 Buttons [b]ok [/b]und [b]abbrechen[/b].
Das Formular heißt "[b]Zeitraum frm[/b]"
Wie solls laufen: ich gebe im Feld [b]Anfangsdatum [/b]z.B. [b]01.01.06 [/b]ein und im Feld [b]Enddatum[/b] [b]31.01.06 [/b]ein und drücke auf [b]ok[/b]. Dann soll ein Bericht aufgehen "[b]Privat rep[/b]" der im Steuerlement Datum alle Datensätze anzeigt, die sich in diesem Zeitraum bewegen.
Antwort 1 von Teddy7
Also zunächstmal solltest Du die Leerzeichen aus Feldnamen, Formularnamen, Berichtsnamnen, usw weglassen. Sonst mußt Du immer darauf achten [ ] zu verwenden.
/////
Zum besseren Verständnis gehe ich mal davon aus, daß das die Felder im Auswahlbild (sollten ungebunden sein) SAnfang und SEnde heißen und das Feld in der Datenquelle des Berichts LDatum . Alle Felder sollten auch als Datumsfelder definiert sein.
Im klick-Ereignis des ok-Buttons hinterlegst Du diesen Code:
Dim suche As String
suche = ""
If not (SAnfang is null) then
if not (SEnde is null) then
suche = "LDatum zwischen " & Format(SAnfang, "\#yyyy\-mm\-dd\#") & " and " & Format(SEnde, "\#yyyy\-mm\-dd\#")
else
suche = "LDatum = " & Format(SAnfang, "\#yyyy\-mm\-dd\#")
end if
end if
DoCmd.OpenReport "Privat rep", acViewPreview, , suche
Ungetestet, aber so ähnlich sollte es aussehen.
Gruß
Teddy
/////
Zum besseren Verständnis gehe ich mal davon aus, daß das die Felder im Auswahlbild (sollten ungebunden sein) SAnfang und SEnde heißen und das Feld in der Datenquelle des Berichts LDatum . Alle Felder sollten auch als Datumsfelder definiert sein.
Im klick-Ereignis des ok-Buttons hinterlegst Du diesen Code:
Dim suche As String
suche = ""
If not (SAnfang is null) then
if not (SEnde is null) then
suche = "LDatum zwischen " & Format(SAnfang, "\#yyyy\-mm\-dd\#") & " and " & Format(SEnde, "\#yyyy\-mm\-dd\#")
else
suche = "LDatum = " & Format(SAnfang, "\#yyyy\-mm\-dd\#")
end if
end if
DoCmd.OpenReport "Privat rep", acViewPreview, , suche
Ungetestet, aber so ähnlich sollte es aussehen.
Gruß
Teddy
Antwort 2 von Meikel
Hallo Teddy,
erstmal danke für die prompte AW. Hab´ das alles so gemacht. Es passiert jetzt folgendes:
Bei If not (SAnfang is null) then bekomme ich einen Laufzeitfehler, Objekt nicht definiert.
Kannst Du mir weiterhelfen??
Danke vielmals vorab
Viele Grüße, Meikel
erstmal danke für die prompte AW. Hab´ das alles so gemacht. Es passiert jetzt folgendes:
Bei If not (SAnfang is null) then bekomme ich einen Laufzeitfehler, Objekt nicht definiert.
Kannst Du mir weiterhelfen??
Danke vielmals vorab
Viele Grüße, Meikel
Antwort 3 von Teddy7
Hast Du das Feld im Selektionsformular SAnfang genannt ?
Antwort 4 von Meikel
Hab ich. Ein Feld SAnfang und ein Feld SEnde.
Hoffe die AW hilft Dir weiter,
Gruß, Meikel
Hoffe die AW hilft Dir weiter,
Gruß, Meikel
Antwort 5 von Teddy7
Als Datum definiert oder als Text ?
Wenn als Datum definiert, dann versuch mal
if not (Sanfang is date) then
Gruß
Teddy
Wenn als Datum definiert, dann versuch mal
if not (Sanfang is date) then
Gruß
Teddy
Antwort 6 von erik
Teddy, du verwechselst SQL-Syntax mit VBA-Syntax. Die Zeile muss richtig lauten:
If Not IsNull(SAnfang) Then
Andernfalls wird "Null" wegen des Is-Operators für ein Objekt gehalten, was es aber nicht ist.
If Not IsNull(SAnfang) Then
Andernfalls wird "Null" wegen des Is-Operators für ein Objekt gehalten, was es aber nicht ist.
Antwort 7 von Meikel
Hallo zusammen,
vielen herzlichen Dank für Eure Hilfe. Hab´ das mal simuliert und es sieht so aus:
Habe Datum von - bis ausgewählt und ok Button gedrückt.
Hinter ok liegt folgender Code:
Private Sub OK_Click()
Dim suche As String
suche = ""
If Not IsNull(SAnfang) Then
If Not IsNull(SEnde) Then
suche = "LDatum zwischen " & Format(SAnfang, "\#yyyy\-mm\-dd\#") & " and " & Format(SEnde, "\#yyyy\-mm\-dd\#")
Else
suche = "LDatum = " & Format(SAnfang, "\#yyyy\-mm\-dd\#")
End If
End If
DoCmd.OpenReport "Privat rep Kopie", acViewPreview, , suche
End Sub
Als Ergebnis kommt folgende Meldung:
Syntaxfehler (fehlender Operator) in Abfrageausdruck
´(LDatum zwischen #2006-01-01# and #2006-01-31#)´
Könnt´ Ihr helfen????
Vielen dank vorab.
vielen herzlichen Dank für Eure Hilfe. Hab´ das mal simuliert und es sieht so aus:
Habe Datum von - bis ausgewählt und ok Button gedrückt.
Hinter ok liegt folgender Code:
Private Sub OK_Click()
Dim suche As String
suche = ""
If Not IsNull(SAnfang) Then
If Not IsNull(SEnde) Then
suche = "LDatum zwischen " & Format(SAnfang, "\#yyyy\-mm\-dd\#") & " and " & Format(SEnde, "\#yyyy\-mm\-dd\#")
Else
suche = "LDatum = " & Format(SAnfang, "\#yyyy\-mm\-dd\#")
End If
End If
DoCmd.OpenReport "Privat rep Kopie", acViewPreview, , suche
End Sub
Als Ergebnis kommt folgende Meldung:
Syntaxfehler (fehlender Operator) in Abfrageausdruck
´(LDatum zwischen #2006-01-01# and #2006-01-31#)´
Könnt´ Ihr helfen????
Vielen dank vorab.
Antwort 8 von Teddy7
Wie heißt denn das Datumsfeld in der Datenquelle des Berichts ?
Möglicherweise muß es auch between statt zwischen heißen. (Ich kann das leider nicht ausprobieren, mein PC spinnt derzeit.)
Gruß
Teddy
Möglicherweise muß es auch between statt zwischen heißen. (Ich kann das leider nicht ausprobieren, mein PC spinnt derzeit.)
Gruß
Teddy
Antwort 9 von erik
Stimmt, statt "Zwischen" muss es "BETWEEN" lauten. SQL verwendet immer noch englische Ausdrücke.
Das ginge auch etwas einfacher, dank BuildCriteria-Funktion. Bitte die entsprechenden Zeilen des bisherigen Codes durch diese beiden ersetzen:
suche = BuidCriteria("LDatum", dbDate, "BETWEEN " & SAnfang & " AND " & SEnde)
suche = BuildCriteria("LDatum", dbDate, SAnfang)
Das ginge auch etwas einfacher, dank BuildCriteria-Funktion. Bitte die entsprechenden Zeilen des bisherigen Codes durch diese beiden ersetzen:
suche = BuidCriteria("LDatum", dbDate, "BETWEEN " & SAnfang & " AND " & SEnde)
suche = BuildCriteria("LDatum", dbDate, SAnfang)
Antwort 10 von Meikel
Mit diesem Code funktionierts jetzt:
Private Sub OK_Click()
Dim suche As String
suche = ""
suche = BuildCriteria("Versanddatum", dbDate, "BETWEEN " & SAnfang & " AND " & SEnde)
DoCmd.OpenReport "Privat rep", acViewPreview, , suche
End Sub
Was jetzt noch fehlt ist, das sich das Formular schließt, nachdem der Bericht angezeigt wird. So bleibt das Auswahlformular geöffnet und der Bericht auch.
Wißt Ihr vielleicht auch noch was zu tun ist.
Vielen herzlichen Dank vorab.
Private Sub OK_Click()
Dim suche As String
suche = ""
suche = BuildCriteria("Versanddatum", dbDate, "BETWEEN " & SAnfang & " AND " & SEnde)
DoCmd.OpenReport "Privat rep", acViewPreview, , suche
End Sub
Was jetzt noch fehlt ist, das sich das Formular schließt, nachdem der Bericht angezeigt wird. So bleibt das Auswahlformular geöffnet und der Bericht auch.
Wißt Ihr vielleicht auch noch was zu tun ist.
Vielen herzlichen Dank vorab.
Antwort 11 von Teddy7
Du solltest das Formular geöffnet lassen.
Wo willst Du denn sonst landen, wenn der Bericht geschlossen oder gedruckt wird.
Grundsätzlich :
DoCmd.Close acForm, "DeinFormularname"
Gruß
Teddy
Wo willst Du denn sonst landen, wenn der Bericht geschlossen oder gedruckt wird.
Grundsätzlich :
DoCmd.Close acForm, "DeinFormularname"
Gruß
Teddy
Antwort 12 von Meikel
Hab einen Code im Bericht beim Öffnen eigegeben, daß das Auswahlformular geschlossen wird.
Komme dann wieder zurück zum Hauptmenü.
Danek Euch vielmals für Eure prompte Hilfe.
Gruß, Meikel
Komme dann wieder zurück zum Hauptmenü.
Danek Euch vielmals für Eure prompte Hilfe.
Gruß, Meikel

