Hallo liebes Forum,
ich habe folgendes Problem mit einem Suchformular:
Und zwar habe ich ein Suchformular um Dokumente zu suchen, mit –u.a.- den Feldern ,,cbo_Projekt", ,,cbo_Dokumententyp", ,,cbo_Version", ,,txt_Beschreibung", ,,txt_DatumDokumentVon" und ,,txt_DatumDokumentBis".
Projekt, Dok-Typ und Version sind Kombinationsboxen.
Das Fomular basiert auf die Abfrage ,,qry_Dokumente". In der Entwurfsansicht dieser Abfrage habe ich, unter ,,Kriterien":
bei dem Feld ,,Projekt" ,,Wie "*" & [Formulare]![frmDokumente]![cbo_Projekt] & "*"" ,
bei dem Feld ,,Dokumententyp" ,,Wie "*" & [Formulare]![frmDokumente]![cbo_Dokumententyp] & "*"" , und
bei dem Feld ,,Version" ,,Wie "*" & [Formulare]![frmDokumente]![cbo_Version] & "*""
geschrieben.
Im Formular, als AfterClick Ereignis, für diese 3 Felder (,,cbo_Projekt", ,,cbo_Dokumententyp" und ,,cbo_Version") habe ich folgendes geschrieben: ,,Me.Requery".
Funktioniert wunderbar, nachdem ich bei Projekt, Dok.-Typ und / oder Version was eingebe, werden unten die Ergebnisse gezeigt.
Das Problem habe ich jetzt aber mit den Feldern ,,txt_Beschreibung" und ,,txt_DatumDokumentVon" und ,,txt_DatumDokumentBis".
Bei dem Feld ,,txt_Beschreibung" ist das Problem, dass in manchen Datenfeldern dieses Feld leer sein kann, so dass wen ich im dazugehörigen Feld in der Abfrage qry_Dokumente
,,Wie "*" & [Formulare]![frmDokumente]![cbo_LetzteVersion] & "*""
schreibe, Access mir nicht die Datensätze zeigt, bei denen das Feld Beschreibung leer ist.
Weißt man, wie ich dieses Problem lösen kann?
Das zweite Problem habe ich mit den Feldern ,,txt_DatumDokumentVon" und ,,txt_DatumDokumentBis". Ich möchte im Suchformular die Möglichkeit haben, eins oder die beiden Felder zu befüllen. Wenn ich z.B. unter ,,txt_DatumDokumentVon" den 2.3.2015 eingebe, soll Access mir die Datensätze zeigen, wo unter ,,DatumDokument" ein Datum nicht älter als der 2.3.2015 steht. Im Gegenteil, wenn ich z.B. unter ,,txt_DatumDokumentBis" den 31.08.2015, soll Access mir alle Datensätze zeigen, wo unter ,,DatumDokument" ein Datum 31.08.2015 oder älter steht. Wenn ich in beiden Felder ,,txt_DatumDokumentVon" und ,,txt_DatumDokumentBis" was eingeben, soll mir Access dann natürlich die Dokumente aus dem Zeitraum zeigen.
Hat jemand hier auch einen Tipp?
Hallo,
vorzuziehen wäre in solchen Fällen der Zusammenbau des SQL-Strings mit einem entspr. Where-Condition-Ausdruck per VBA....
Zitat,,Wie "*" & [Formulare]![frmDokumente]![cbo_LetzteVersion] & "*""
schreibe, Access mir nicht die Datensätze zeigt, bei denen das Feld Beschreibung leer ist.
Versteh ich nicht... Was hat "cbo_LetzteVersion" mit der Beschreibung zu tun?
ZitatDas zweite Problem habe ich mit den Feldern ,,txt_DatumDokumentVon" und ,,txt_DatumDokumentBis". Ich möchte im Suchformular die Möglichkeit haben, eins oder die beiden Felder zu befüllen. Wenn ich z.B. unter ,,txt_DatumDokumentVon" den 2.3.2015 eingebe, soll Access mir die Datensätze zeigen, wo unter ,,DatumDokument" ein Datum nicht älter als der 2.3.2015 steht. Im Gegenteil, wenn ich z.B. unter ,,txt_DatumDokumentBis" den 31.08.2015, soll Access mir alle Datensätze zeigen, wo unter ,,DatumDokument" ein Datum 31.08.2015 oder älter steht. Wenn ich in beiden Felder ,,txt_DatumDokumentVon" und ,,txt_DatumDokumentBis" was eingeben, soll mir Access dann natürlich die Dokumente aus dem Zeitraum zeigen.
eine Möglichkeit wäre:
>=nz([Forms]![frmDokumente]![txt_DatumDokumentVon];#01.01.1900#)
und
<=nz([Forms]![frmDokumente]![txt_DatumDokumentBis];#01.01.2200#)
bei den enstpr. Abfragespalten.
Entschuldige, habe mich vertippt, ich meinte "cbo_Beschreibung" und nicht "cbo_LetzteVersion".
Danke Franz für Deine Antwort!
Es gibt aber nur eine Abfragespalte "DatumDokument". Die 2 Formularfelder "txt_DatumDokumentVon" und "txt_DatumDokumentBis" beziehen sich auf diese Abfragespalte.
Hi,
ZitatEs gibt aber nur eine Abfragespalte "DatumDokument"
du kannst die beiden Kriterien mit UND verknüpft in eine Zeile (="Zelle") schreiben.
Super! Versuche dann es gleich. Danke Euch!!!
Funktioniert wunderbar! Vielen Dank!
Wisst Ihr vielleicht, was ich in die Abfragespalte "Beschreibung" eingeben soll? Wie vorhin erwähnt, wenn ich
"Wie "*" & [Formulare]![frmDokumente]![txt_Beschreibung] & "*""
eingebe, betrachtet Access nur die Datensätze, wo das Feld "Beschreibung"nicht leer ist.
Ich habe übrigens ein kleines Problem entdeckt nach der Lösung der Datumsfelder.
Ich habe in der Abfragespalte ,,DatumDokument" folgendes eingegeben:
>=Nz([Forms]![frmDokumente]![txt_DatumDokumentVon];#01.01.1900#) Und <=Nz([Forms]![frmDokumente]![txt_DatumDokumentBis];#01.01.2200#)
Wie schon geschrieben, funktioniert sehr gut, aber, wenn ich auf den Knopf ,,Filter Zurücksetzen" klicke, kommt folgende Fehlermeldung:
Laufzeitfehler ,3420': Das Objet ist ungültig, oder es ist nicht mehr festgelegt.
Und markiert die letzte Zeile meines VBA Codes. Hier der VBA Code hinter dem ,,Filter zurücksetzen" Botton:
Private Sub btn_FilterEntfernen_Click()
Me.cbo_Projekt = ""
Me.cbo_Dokumententyp = ""
Me.cbo_Version = ""
Me.txt_DatumDokumentVon = ""
Me.txt_DatumDokumentBis = ""
Me.txt_Beschreibung = ""
Me.Requery
End Sub
Hi,
1)
erweitere das Kriterium wie folgt:
Wie "*" & [Formulare]![frmDokumente]![txt_Beschreibung] & "*" ODER IST NULL
2)
Setze die Felder auf NULL anstelle von "".
Hallo Maggie, hier die Nervensäge nochmal =)
Der Punkt 2 klappt jetzt wunderbar.
Der Punkt 1 aber noch nicht. Also, wenn ich das Formular öffne, soll Access mir alle Datensätze zeigen. Aber, wenn ich ein Suchkriterium eingebe, sollen nur die Datensätze gezeigt werden, die das Kriterium erfüllen. Mit Deinem Code zeigt er mir die DS, die das kriterium erfüllen + alle Datensätze, wo unter "Beschreibung" nichts eingetragen ist.
Kann man das ändern?
ZitatMit Deinem Code zeigt er mir die DS, die das kriterium erfüllen + alle Datensätze, wo unter "Beschreibung" nichts eingetragen ist.
Ja, ich dachte das wäre es was du haben wolltest.
Oder wie war das hier gemeint:
Zitatbetrachtet Access nur die Datensätze, wo das Feld "Beschreibung"nicht leer ist.
Entschuldige, habe mich falsch ausgedruckt.
Wenn ich das Formular öffne, sollen alle Datensätze (also die Null und Nicht Null Werte) gezeigt werden.
Wenn ich was im Feld "Beschreibung" eingebe, sollen nach Aktualisierung nur die Datensätze gezeigt werden, die in der Abfagespalte "Beschreibung" den Wert, den ich Formularfeld "Beschreibung" eingegeben hat. Z.B. ich gebe unter "Beschreibung" "X" ein, dann sollen die Datensätze gezeigt werden, wo z.B. unter "Beschreibung" "Prüfung X", oder "Test X" eingetragen wurde.
Kann man das bei Access machen?
Dann sollte folgendes funktionieren:
Wie "*" & [Formulare]![frmDokumente]![txt_Beschreibung] & "*" ODER [Formulare]![frmDokumente]![txt_Beschreibung] IST NULL
Super! Jetzt klappt es super! Danke, Maggie!