Neuigkeiten:

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

Mobiles Hauptmenü

Selektive Abfrage mit Kontrollkästchen

Begonnen von wbks06, Juni 18, 2015, 20:31:36

⏪ vorheriges - nächstes ⏩

wbks06

Hallo an alle,

ich habe eine Tabelle ,,ReferenzenMaster" mit diversen Feldern die vergangene Projekte beschreiben (Land, Titel, Auftraggeber, BeschreibungProjekt, BeschreibungLeistungen). Darunter sind auch 18 ja/nein Felder zu bestimmten Leistungskomponenten (z.B. Betrieb, Design, Training, etc.). Insgesamt sind es derzeit rund 130 Datensätze.

Nun möchte ich eine standardisierte Suche einrichten nach Projekten, die bestimmte Leistungskomponenten beinhalten. Also z.B. alle Projekte in denen u.a. Training durchgeführt wurde. Diese Projekte/Datensätze sollen dann in einer neuen Abfrage (qryReferenzenSuche – identische Struktur wie ReferenzenMaster) dargestellt werden.

Dafür habe ich ein ungebundenes Formular angelegt (frmReferenzenSuche) mit 18 ungebundenen Kontrollkästchen.  Die Auswahl soll also durch Anklicken eines oder mehrerer Kästchen (Leistungskomponenten) erfolgen. Für den Button ,,Suche starten" habe ich bislang die folgende Ereignisprozedur:

Private Sub Befehl64_Click()
Dim frm As Form
Set frm = Screen.ActiveForm
Dim strKrit As String

If Not IsNull(frm!Betrieb) Then strKrit = strKrit & " And Betrieb = " & frm!Betrieb
If Not IsNull(frm!Design) Then strKrit = strKrit & " And Design = " & frm!Design
If Not IsNull(frm!Training) Then strKrit = strKrit & " And Training = " & frm!Training

If Len(strKrit) > 0 Then
strKrit = Mid(strKrit, 6)
    'sql in die Abfrage qryReferenzenSuche schreiben
        CurrentDb.QueryDefs(qryReferenzenSuche).SQL = "select * from " & tblReferenzenMaster & " where " & " in(" & frmReferenzenSuche & ")"
    'Abfrage öffnen.
    DoCmd.OpenQuery "qryReferenzenSuche"
  Else
    MsgBox "Keine Auswahl getroffen!", vbInformation
  End If
End Sub

Wenn ich kein Kästchen anklicke, kommt ,,keine Auswahl getroffen", ( ;)) – Das passt.
Wähle ich ein oder mehrere Kästchen erscheint ,,Element in dieser Auflistung nicht gefunden" und das Debuggen verweist auf den oben markierten Teil.

Ich habe schon eine Menge recherchiert und rumprobiert, allmählich bin ich am Verzweifeln... :(

Zusätzlich zu der Auswahl durch 1 bis n Kontrollkästchen soll auch eine Auswahl durch ein Dropdown-Feld "Land" (Länderliste als separate Tabelle schon angelegt) und/oder einen zurückliegenden Zeitraum (Projektende ist weniger als X Jahre her) Teil des Suchformulars sein. Aber das ist ein 2. Schritt, Hauptsache das mit den Kontrollkästchen funktioniert erst einmal.

Wer hat dazu eine Idee und kann mir helfen?

Danke schon mal im Voraus.

Winfried

HB9876

Hallo,
ich habe nach dieser Loesung schon mehrere Datenbank erstellt, was die Suchfunktion angeht.

http://www.office-loesung.de/ftopic13271_0_0_asc.php

Fuer mich eine gute Loesung und warum das Rad neu erfinden.

Gruss

Jens
Mit jeder Antwort komme ich weiter und lerne.<br /><br />Danke!!!

database

Hallo,

... CurrentDb.QueryDefs(qryReferenzenSuche).SQL = "select * from " & tblReferenzenMaster & " where " & " in(" & frmReferenzenSuche & ")" ...

das ist kein auswertbarer SQL-String

Weise den Kontrollkästchen als Standardwert 0 zu, dadurch werden diese beim Formularöffnen leer angezeigt und nicht ausgegraut, dann ...

If frm!Betrieb = -1 Then strKrit = strKrit & " And Betrieb = -1"
If frm!Design = -1 Then strKrit = strKrit & " And Design = -1"
If frm!Training = -1 Then strKrit = strKrit & " And Training = -1"

und ...

CurrentDb.QueryDefs("qryReferenzenSuche").SQL = "select * from tblReferenzenMaster where ID >0" & strKrit

ID ersetzt du durch den Namen deines Primärschlüssels und den Namen deiner Abfrage in Gänsefüßchen!

Sollte funktionieren

wbks06

Danke für die schnellen Antworten. Werde ich mir gleich ansehen bzw. ausprobieren. Dann melde ich mich nochmal.
Grüße
Winfried

wbks06

Hallo Jens,

super Sache! Hier allerdings noch eine Frage: wie mache ich das, wenn ich beim Datum wie folgt nach DS suchen möchte:

Feldeinträge "End_Date" nach bzw. nicht vor dem Suchdatum, also z.B. alle DS, deren End_Date nach dem 01.05.2010 liegt. Das Suchdatum ist dabei das manuell einzutragende Datum.

Danke schon mal im Voraus.

Winfried