Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Problem mit Suchformular

Begonnen von Carlos_C, September 22, 2015, 08:15:59

⏪ vorheriges - nächstes ⏩

Carlos_C

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?


Gruß,

Carlos

DF6GL

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.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Carlos_C

Entschuldige, habe mich vertippt, ich meinte "cbo_Beschreibung" und nicht "cbo_LetzteVersion".
Gruß,

Carlos

Carlos_C

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.
Gruß,

Carlos

MaggieMay

Hi,
ZitatEs gibt aber nur eine Abfragespalte "DatumDokument"
du kannst die beiden Kriterien mit UND verknüpft in eine Zeile (="Zelle") schreiben.
Freundliche Grüße
MaggieMay

Carlos_C

Super! Versuche dann es gleich. Danke Euch!!!
Gruß,

Carlos

Carlos_C

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.



Gruß,

Carlos

Carlos_C

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
Gruß,

Carlos

MaggieMay

Hi,

1)
erweitere das Kriterium wie folgt:
Wie "*" & [Formulare]![frmDokumente]![txt_Beschreibung] & "*" ODER IST NULL

2)
Setze die Felder auf NULL anstelle von "".
Freundliche Grüße
MaggieMay

Carlos_C

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?
Gruß,

Carlos

MaggieMay

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.
Freundliche Grüße
MaggieMay

Carlos_C

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?
Gruß,

Carlos

MaggieMay

Dann sollte folgendes funktionieren:
Wie "*" & [Formulare]![frmDokumente]![txt_Beschreibung] & "*" ODER [Formulare]![frmDokumente]![txt_Beschreibung] IST NULL
Freundliche Grüße
MaggieMay

Carlos_C

Super! Jetzt klappt es super! Danke, Maggie!
Gruß,

Carlos