Office: (Office 2013) Variable Anzahl von Kriterien für Abfrage

Helfe beim Thema Variable Anzahl von Kriterien für Abfrage in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo an alle, ich möchte aus meiner DB mit freien Mitarbeitern die auswählen, die eine bestimmte Kombination von Qualifikationen haben. Dafür soll ein... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von wksw06, 28. Januar 2017.

  1. Variable Anzahl von Kriterien für Abfrage


    Hallo an alle,
    ich möchte aus meiner DB mit freien Mitarbeitern die auswählen, die eine bestimmte Kombination von Qualifikationen haben. Dafür soll ein Anwender in einem Formular mit Hilfe von 5 ungebundenen Kombinationsfeldern eine bis fünf verschiedene Qualifikationen auswählen. Wichtig ist, es kann sein, dass nur eine Qualifkation, zwei oder eben bis zu fünf augewählt werden. Diejenigen die ausgewählt werden sollen zwingend bei den Mitarbeitern vorhanden sein. Dazu habe ich folgenden Code:
    Code:
    Momentan funktioniert dies nur, wenn ich in allen 5 Kombifelder ein Kriterium eingetragen habe. Hat jemand eine Idee, wie ich den Code so gestalten kann, dass die Anzahl der zwingend zu erfüllenden Kriterien variabel ist (1-5)?
    Grüße
    Winfried

    :)
     
  2. Ich weiß nicht, was Du unter Funktionieren verstehst.
    Die Kriterien wie dargestellt sind nicht plausibel, es fehlen Korrealitionen zwischen Hauptabfrage und Unterabfragen.

    Ansonsten denke nach über ein alternatives Listenfeld mit Mehrfachauswahl und eine solche Filterung:
    Code:
     
  3. wenn ich in allen 5 Kombifeldern Kriterien eingebe, bekomme ich das gewünschte Abfrageergebnis. Wähle ich in weniger als 5 Kombifeldern Kriterien aus, ist mein Abfrageergebnis leer.
     
  4. Variable Anzahl von Kriterien für Abfrage

    Du musst das dynamisch zusammenstellen: Code:
    Und letztlich den erstellten String anhängen an "SELECT * FROM daten WHERE "
     
    hcscherzer, 29. Januar 2017
    #4
  5. Hallo Hans-Christian,
    danke erst einmal. Du hast es mir ja in VBA geschickt. Bislang habe ich alles direkt im SQL Editor gemacht. Wie sähe das denn dafür aus?
    Danke
    Winfried
     
  6. Ich habe das mal wie folgt übersetzt: Code:
    Klappt aber leider nicht. Dafür bin ich eben zuwenig Profi in diesem Bereich...
     
  7. Variable Anzahl von Kriterien für Abfrage

    Aber einfach hinten an meine Select Anweisung rankopieren funktioniert auch nicht (Syntaxfehler)
     
  8. Das geht so nicht im Abfrageentwurf (=SQL Editor). Das musst Du per VBA machen (den kompletten AbfrageString dynamisch zusammensetzen) und dann auch per Code in die Abfrage speichern: Code:
     
    hcscherzer, 30. Januar 2017
    #9
  9. Da dies aber nur ein Ausdruck in einer umfangreicheren Abfrage ist, möchte ich das ebenso im Abfrageeditor machen. Ansonsten müsste ich den gesamten Rest auch wieder in VBA umschreiben... und das nach meinen Erfolgserlebenissen dort in den letzten Tagen *frown.gif* .
     
  10. Dann guck dir den Link an, den Eberhard in #7 gepostet hat. Und beachte den Hinweis. Wenn die Abfrage eh schon "umfangreicher" ist, könnte das bald eng werden.
    maike
     
  11. Wer glaubt, gescheites SQL könnte man (nur) mit dem Abfrageeditor machen, der glaubt auch, Mountainbiken geht mit Stützrädern am Bike.

    Wechsele in die SQL-Ansicht. Da kann man alles schreiben, und wenn es der geforderten Syntax entspricht, kann man sogar damit arbeiten.

    Umfang ist jetzt nicht an sich ein Merkmal von etwas Gehobenen, zumal wenn es nur aus Zusammengeklicke erzeugt wurde.

    Daneben gibt es andere Lösungen, um 5 Auswahlmöglichkeiten aus der gleichen Tabelle in 5 Kombinationsfeldern bereitzustellen, eine wurde genannt. Mit seinem Tun stellt man auch Weichen für das weitere Tun.
     
  12. Variable Anzahl von Kriterien für Abfrage

    Den Link in #7 hatte ich nicht als solchen wahrgenommen. Danke auch für die anderen Hinweise. Die werde ich jetzt mal durchgehen und mich dann nochmal melden falls ich noch Fragen habe.
    Winfried
     
  13. Hallo Winfried,
    es gäbe noch einen anderen Ansatz, da sowieso immer ein Wert gewählt werden muss, kannst du dein Konzept auch beibehalten.

    FROM (tblfreelancer INNER JOIN tblExpertQuali ON tblfreelancer.expertID = tblExpertQuali.expertID) INNER JOIN tblbackgrounds ON tblExpertQuali.qualificationID = tblbackgrounds.qualificationID
    WHERE exists
    (select * from tblfreelancer where (tblbackgrounds.qualificationID) IN([Formulare]![frmFreelancerSuche]![QualiAuswahl])

    Dazu erstellt du ein verstecktes Feld Namens QualiAuswahl.
    Darin wird die Auswahl der Qualifikationen per Komma getrennt hinterlegt.
    QualiAuswahl = 1,8,2
    QualiAuswahl = 5
    usw.
    Das Argument QualiAuswahl musst du per VBA erstellen. Sollte aber kein Problem sein.

    Danach ist es egal wie viele Argumente du verwendest. Voraussetzung ist wenigstens ein Argument. Im Prinzip der erste Vorschlag von Eberhard.

    Die Abfrage wird dadurch viel einfacher (nur noch ein Subselect) und kann auch gespeichert werden. Vor allem im Umfeld gleichzeitiger Zugriffe auf die Abfrage, die richtige Lösung.

    LG Markus
     
    markusxy, 30. Januar 2017
    #14
  14. \@Markus:
    Dann steht im In-Ausdruck im Prinzip nur ... IN ("1,8,2")

    Wenn du per VBA die Werte nicht in ein Textfeld sondern in eine Hilfstabelle (1 DS je Filterwert) schreibst, funktioniert es auch mit dem In-Ausdruck

    Code:
    Bei diesem Ausdruck finde ich allerdings interessant, dass die Datenquelle gar nicht im Filterausdruck enthalten ist. *wink.gif*


    Zum Thema allgemein:
    Ausgangssituation: 1-n Filterwerte werden ausgewählt
    Ziel: Anzeige jener Datensätze die für jeden Filterwert einen Treffer liefern.

    => irgendwas In (...) reicht nicht aus, das wäre die Bedingung: ein beliebiger Filterwert (aber nicht alle) muss einen Treffer liefern.

    Lösungsvarianten:
    Variante mit Exists:
    Exists(... Filter1 ...) And Exists (... Filter2 ...) .. wie im 1. Beitrag gezeigt - die Exists-Asudrücke müssten dynamisch gestaltet werden, da sie von der Anzahl der Filterwerte abhängen.

    Variante mit In(...) und Count (unter der Bedingung, dass es pro Filterwert nur einen Treffer je Mitarbeiter geben kann.

    Ich bleib bei dem oben genannten Beispiel mit der Hilfstabelle, die die Filterwerte enthält.
    Ob die Hilfstabelle per VBA befüllt, mittels Endlosformular direkt vom Anwender eingegeben oder die Datenstruktur einer MultiValue-Combobox oder einer MultiValue-Listbox verwendet wird, ist Geschmackssache.

    Code:
    Anm.: Ich bin mir nicht sicher, ob Jet das Subselect im Having-Teil erlaubt. Falls das nicht geht, eventuell als Cross join einbauen.

    Statt der Hilfstabelle kann natürlich auch dynamisch zusammengesetztes SQL verwendet werden. Dann kann aber auch die Exists-Variante bleiben.

    mfg
    Josef
     
    Josef P., 31. Januar 2017
    #15
Thema:

Variable Anzahl von Kriterien für Abfrage

Die Seite wird geladen...
  1. Variable Anzahl von Kriterien für Abfrage - Similar Threads - Variable Anzahl Kriterien

  2. Variable Anzahl immer 9er Kombination StellenBerechnung

    in Microsoft Excel Hilfe
    Variable Anzahl immer 9er Kombination StellenBerechnung: Hallo schönen Guten Abend mit Bauchweh, das ich bereits habe bei meiner Nicht weiter kommenden Formel. Folgendes Es lässt sich Schwer beschreiben doch ich versuche es Ich habe in J3 einen Wert...
  3. Makro für variable Anzahl von Datensätzen

    in Microsoft Excel Hilfe
    Makro für variable Anzahl von Datensätzen: Hallo zusammen, ich habe wieder einmal ein kleines Excel-Problem, bei dem Ihr mir sicherlich helfen könnt. Ich habe eine Excel-Liste, das ist ein Export aus einem anderen Programm (siehe...
  4. VBA: Variable Anzahl Zeilen mit Suchkriterien finden und kopieren

    in Microsoft Excel Hilfe
    VBA: Variable Anzahl Zeilen mit Suchkriterien finden und kopieren: Hallo zusammen, ich konnte bislang nur bruchstückhafte Ansätze zu meinem Problem finden, jedoch keinen um mehrere Kriterien zu erfassen und anschließend zu ordnen, daher brauche ich (mal wieder)...
  5. Variable Anzahl von Werten in eine Zelle schreiben

    in Microsoft Excel Hilfe
    Variable Anzahl von Werten in eine Zelle schreiben: Hallo, Ich möchte Werte aus verschiedenen Zellen in ein und dieselbe schreiben und dies abhängig davon. ob die Quellzellen gefüllt sind oder nicht. ich habe einen kleinen Code geschrieben, der...
  6. Anzahl von Zeilen als Variable speichern

    in Microsoft Excel Hilfe
    Anzahl von Zeilen als Variable speichern: Hallo, ich bin recht neu bei Makros und habe ein Problem, welches ich nicht selbst lösen kann. Ich konnte dazu auch bisher nichts verständliches für mich hier im Forum finden. Daher stelle ich...
  7. Variable Anzahl von Zeilen einfügen und Daten kopieren

    in Microsoft Excel Hilfe
    Variable Anzahl von Zeilen einfügen und Daten kopieren: Hallo zusammen, um mein Problem zu darzustellen, erkläre ich kurz was ich vor habe: ich möchte gerne gefilterte Daten aus einer Liste per Button-Klick in eine Vorlage übertragen. Da die Vorlage...
  8. Anzahl Stellen in variable übergeben

    in Microsoft Excel Hilfe
    Anzahl Stellen in variable übergeben: Hallo zusammen, meine aktive Zelle ist c1. Ich möchte jetzt die Anzahl der Stellen einer Zahl in A1 ermitteln und als variable k ausgeben. Also wenn in A1 der Wert 125 steht, soll k = 3 ergebn....
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden