Hallo liebe Forumsmenschen,
ich und ein Freund von mir haben ein (hoffenlich) "kleiners" Access Problem. Hier der Sachverhalt:
Wir haben Zwei Auswahlfelder, einmal 4 Auswahlmöglichkeiten, einmal 7 Auswahlmöglichkeiten, welche durch eine Abfrage beliebig miteinander kombiniert werden sollen (Bezug auf die selbe Tabelle).
Es handelt sich dabei um Ja/Nein Felder, also kommen wir auf 2048 mögliche Lösungen 2^4 *2^7... Das erschien uns etwas viel- und Access war unsere Abrfage auch zu kompliziert (Fehlermeldung: Ausdruck zu kompliziert).
Die Frage ist also, ist es möglich eine Abfrage zu erstellen, bzw. zu Programmieren, welche sämtliche mögliche Kombination abgleicht und dann entsprechend alle Treffer wiedergibt? ???
Wie stehen leider ziemlich auf dem Schlauch, da keiner von uns Programmieren kann...
Für Tipps die uns in die Richtige Richtung deuen wären wir auch schon sehr dankbar!!!
::)
Hallo,
wenn es sich um 11 Ja/Nein-Felder handelt, warum wird da zwischen 4 und 7 Feldern unterscheiden?
Eigentlich müsste es so heißen:
Bei 11 Ja/Nein-Feldern soll jeweils zwischen True und False unterschieden werden.
Soll heißen, dass es (z. B.) 11 ungebundene Kontollkästchen geben sollte, die entsprechend der gewünschten Filterung auf Ja oder Nein gesetzt werden müssen, wobei dann anschliessend die Filterung der Datensätze durch einen Klick auf eine Schaltfläche erfolgt.
Grundsätzlich erhebt sich bei solchen Konstellationen die Frage, ob beim Tabellenaufbau die Normalisierungsregeln eingehalten wurden.
Schon aml vielen Dank für die Antwort...
Leider hilft diese kaum weiter- die Potenzgesetze sind mir schon klar... und ob es jetzt 2^7,2^11 oder 2^10000 Möglichkeiten gibt- das Problem bleibt das selbe:
Eine Abfrage auf die Beine zu Stellen, die verschiedene Ja/Nein Felder abfragt ohne für jede Kombinationsmöglichkeit explizit in SQL packen zu müssen.... Ob es hierzu vlt. einen Ideenansatz gibt??
Vielen Dank und viel Grüße
Steffen
Hi Steffen,
bin mir nicht sicher, wo das Problem ist.
In http://www.access-o-mania.de/forum/index.php?topic=18227.msg102814#msg102814 hatte ich beschrieben, wie mehrere Felder für eine Abfrage zu kombinieren sind.
Dieses Prinzip ist auch auf 11 Ja/Nein-Felder anwendbar.
Falls Probleme bestehen, stelle eine komprimierte + gezippte Datenbank im access 2003-Format mit ein paar Spieldaten hier zur Verfügung.
Harald
ZitatOb es hierzu vlt. einen Ideenansatz gibt??
Ja, und zwar einen sehr simplen: Bei Auswahl von außen (in einem Formular) kann man die ausgewählten Werte als Parameter an die Abfrage übergeben, bei 11 Auswahlen also 11 Parameter in der gerade eingestellten Kombination.
Bis dahin braucht man nur eine Abfrage.
Zusätzlich sollte man sich im Klaren darüber sein, wie man die einzelnen Kriterien logisch verknüpft: OR <=> AND
Hier ergibt sich je nach Anforderungen eine zusätzliche Varianz.
MfGA
ebs
hmmmm.... also ich habe mir alles sehr dankend durchgelesen, habe aber leider immer noch keine Idee was zu tun ist...
Vlt. ist aber auch wirklich meine Beschreibung nicht ausreichend... Also hier noch ein Versuch: ::)
Wir haben eine Excel Tabelle, bei welcher für jeden Datensatz zwei Kriterien relevant sind- ein ausschließendes (4 Möglickeiten, z.B. A, B, C, D) und ein nicht ausschließendes (7 Möglichkeiten, z.B. 1-7). Basierend darauf haben wir in Access ein Formular erstellt, welches über entsprechende 11 CheckBoxen verfügt. Je nach Auswahl der Checkboxen sollen die Daten aus der Tabelle nun in einem Bericht wiedergegeben werden. In dem Bericht sollen nun alle Kombinationsmöglichkeiten der Checkboxen abbildbar sein. Sprich alle CheckBoxen markiert, keine markiert, A C D und 3 5 7 markiert, B C und 1 3 5 6 markiert etc...
Über eine weitere Tabelle die mit den Kontrollkästchen verknüpft ist, haben wir es geschafft eine Abfrage zu erstellen für alle "einfachen Kombinationen"... Sobald aber z.B. 4 Zahlen auswählbar sind sprengt das Ganze ein wenig den Rahmen... Also dachten wir uns man könnte vlt. eie automatische Abfrage erstellen, welche schaut welche CheckBoxen markiert sind, sich NUR die übereinstimmenden Datensätze aus der Tabelle zieht und in unserem Bericht wiedergibt.
Dabei soll alles als ODER Abfrage werkeln, außer der Verbindung von einem Buchstaben und einer Zahl... Also wenn A und B sowie 1 und 2 gewählt werden soll A1, A2, B1 und B2 Datensätze ausgegeben werden...
Puuuuuhhh.... Soviel Text.... Ich hoffe irgendjemand macht sich die Mühe und kämpft sich durch... und hat dann vlt. nochmal eine Idee für mich....
Ganz ganz vielen lieben Dank schon mal an alle die es überhaupt versuchen!!!
Allen ein schönes Wochenende!!!
Viele Grüße
Steffen
Hallo,
also für mich sprichst Du in Rätseln..
"Wir haben eine Excel Tabelle, bei welcher für jeden Datensatz zwei Kriterien relevant sind- "
Was ist bei Dir ein Datensatz in einer Excel-Tabelle? Was bedeutet dabei: "für jeden Datensatz zwei Kriterien relevant sind"
"ein ausschließendes (4 Möglickeiten, z.B. A, B, C, D) und ein nicht ausschließendes (7 Möglichkeiten, z.B. 1-7). "
Meinst Du mit " A, B, C, D" die Spaltenüberschriften und mit "1-7" die Zeilen im Excel-Sheet??
" Je nach Auswahl der Checkboxen sollen die Daten aus der Tabelle nun in einem Bericht wiedergegeben werden."
Aus der Excel-Tabelle? Und WELCHE Daten (Excel-Zellen) dann ?
"In dem Bericht sollen nun alle Kombinationsmöglichkeiten der Checkboxen abbildbar sein."
Wieso die Kombinationsmöglichkeiten? Ich denke Du willst dort "Datensätze" sehen?
Könnte es sein, dass Du einfach und lapidar meinst, in einem Formular mittels einem "Checkbox-Array", das die Excel-Zellen visuell veranschaulicht, die Daten der zu den angehakten Checkboxen korrespondierenden Excel-Zellen in einem Bericht darzustellen?
Vielleicht wäre auch ein konkretes Beispiel einer Excel-Tabelle und dem Ergebnis (als Bericht) , natürlich mit Angabe des dafür zuständigen "Kriteriums", sinnvoll und hilfreich..
Also hoffentlich kann ich damit ein wenig Licht ins dunkele bringen...
Ein Datensatz der Excel Tabelle ist für mich eine Zeile der Tabelle. Zwei Kriterien sind relevant soll bedeuten, dass bei der Abfrage in Access nur zwei Kriterien berücksichtigt werden müssen (auch wenn die Tablle 30 Spalten hat).
Für das ausschließende Kriterium gibt es eine Spalte in Excel- d.h. jedem Datensatz kann entweder A oder B oder C oder D zugeordnet werden.
Nicht außschließend bedeutet wir haben 7 Spalten- jeweils mit "X" markiert wenn das Kriterium auf den Datensatz zutrifft- also können zwischen 0 und 7 Kriterien zutreffen. Die Buchstaben und Zahlen waren nur als Beispiel gedacht.
Wiedergegeben werden sollen Daten aus der Excel Tabelle, richtig. Dabei sollen bestimmte Spalten ausgewählt werden, wenn die entsprechenden CheckBoxen markiert sind.
Je nach Auswahl der Checkboxen unterscheidet sich der Bericht. Natürlich möchte ich hier Datensätze sehen.
Vlt. nochmal ein Beispiel:
Wenn ich nur 3 CBs hätte gäbe es schon 8 Kombinationsmöglichkeiten... Ich möchte nun, dass für jede dieser Möglichkeiten (also 1xalle, 1xkeine, 3xzwei oder 3xeine markierte CB) die jeweiligen Zeilen (Datensätze) meiner Excel Tabell wiedergegeben werden, ohne im Abfrageentwurf jede Möglichkeit händisch eingeben zu müssen (man bedenke ich habe 2^11 Kominationsmöglichkeiten)...
Hallo,
Sorry,
ich versteh es nicht...
Kriterien(werte) musst Du angeben, z. B. wäre ein Haken in einer CB ein Kriterium.. und nicht der Wert eines Feldes (oder Zelle) im Datensatz.
Mach einfach mal ein authentisches Beispiel, und keine konjunktiven Aussagen und auch keine Vorschläge, wie und wo man eine passende Abfrage erstellt...
Vielleicht kommt hier auch nur Excel-Denken mit der Verwendung von DB-Systemen ins Gehege...
Wenn sich A, B, C und D gegenseitig ausschließen, so gehört diese Auswahl in ein Feld (möglichst als Zahl) und ist im Formular per Optionsgruppe darstellbar.
Also nochmal mit Bildchen...
Das Bild Informationen zeigt wie die sich ausschließenden Kriterien in der Excel- Tabelle dargestellt werden. Das Bild Ratingsystem zeigt wie die sich nicht ausschließenden Kriterien dargestellt sind. Wird nun im Formular die jeweilige CB angeklickt, wird in der Tabelle Cat_Ctrl_Status ein Häckchen gesetzt. Auf dieser Tabelle und auf der Excel Datei greift dann die Abfrage zu (Bilder Abfrage 1 und Abfrage 2). In diesem Bsp. haben wir nur die Abfrage für ein kleinen Teil der Variablen gemacht und den Aufwand gering zu halten. Mit jeder zusätzlichen CB potenzieren sich aber leider die Möglichkeiten.
Der Sinn der Abfrage nochmal in Worten: Wenn Kriterium in der Excel Tabelle Change_Docus... markiert und Kategorie Y zutreffend, dann gebe alle diese Datensätze im Bericht wieder. Nun wollen wir aufgrund der hohen Datenmenge die Abrage automatisieren- um nicht für 2048 mögliche Kombinationen "X" und Falsch setzten zu müssen....
Beachtet werden muss ja, dass z.B. nur nach unbedeutend gefiltert werden können soll, aber auch z.B. nach Unbedeutend und Kriterium A1 und B1 usw...
Schönen Start in die neue Woche und vielen Dank für die Hilfe!!
Geüße Steffen
Hallo,
mhmm, wenn ich das nur ein ganz klein wenig verstehe (was trotzdem total übertrieben ist) , dann soll eine DatenTabelle (wie heißt die? welche Tabellenfelder gibt es?) so abgefragt werden, wie die Abfrage-Bedingungen im Bild "Abfrage_2.png" ("Kriterientabelle" ) für die einzelnen Tabellenfelder hinterlegt sind, wobei sich die Abfrage dann jeweils auf nur EINE "Zeile" in diesem Bild bezieht.
Ob sich da nun was ausschließt oder nicht, obliegt Deiner Definition (den Einträgen) in dieser "Kriterientabelle", und dass sich da die Bedingungskombinationen mit jedem weiterem Feld potenzieren, ist wohl nicht zu unterdrücken...
btw: irgendwie gibt es bei mir gewisse Assoziationen ::)
Also die Tabelle heißt Change_Dokus_Access (und hat knapp 75 Spalten- also ziemlich viele Tabellenfelder)...
Richtig- die Abfrage soll sich nur auf eine Zeile der "Kriterientabelle" beziehen- abhänig von den markierten CBs.
Leider begrenzt die Abfrage aber die Möglickeiten von Access- im Rahen der Enwurfsansicht...
Deswegen kam uns die Idee von einer Kominationsabfrage- vlt. in VBA? Indem die Abzufragenden Parameter nur einmal angegeben werden müssen? ICh dachte hier gäge es vlt. ein paar Standardschnippserl, weil an sich eine Komination vrs. CBs ziemlih häufig vorkommt...
Hallo,
obwohl ich die Zusammenhänge auch nicht verstanden habe, möchte ich die Richtigkeit des Datenmodells erheblich bezweifeln wollen. Diese Erkenntnis lässt sich aus den Ja/Nein Feldern, aus den Aufzählungsfeldern (A1, A2, B1, B2 usw.), aus den Feldern mit X problemlos erkennen. Ohne ein datenbankgerechter Aufbau der DB (als relationale Datenbank) wird es Dir mit Access nicht gelingen die gewünschte Auswertung zu erreichen. Access erfordert normalisierte Tabellenstrukturen. Da führt in Deinem Fall kein Weg vorbei. Ja/Nein Felder in der gezeigten Art sind dabei völlig unbrauchbar. Und wenn bei diesen Ja/Nein Feldern noch welche dabei sin die sich gegenseitig ausschließen (wie bereits von Maxel gesagt) sind das ohnehin zu viele Ja/Nein Felder.
Hallo,
"Richtig- die Abfrage soll sich nur auf eine Zeile der "Kriterientabelle" beziehen- abhänig von den markierten CBs."
so wäre das falsch ausgedrückt....
Wenn meine Vorstellung der Kriterientabelle und deren Verwendung zutrifft, so benötigt diese Tabelle noch ein Primärschlüsselfeld und dazu vielleicht ein Textfeld, in dem die Bedeutung der in diesen Datensatz (bei einer Excel-Tabelle halt "Zeile") zusammengestellten Kriterien benannt wird.
In einem Formular erfolgt mit einem Kombifeld die Auswahl eines bestimmten Kriteriums (d. h. einer "Zeile" aus der Kriterientabelle) und damit der Zusammenbau eines Abfrage-SQL-Strings mit einer den akt. Kriterien entspr. Where-Condition für einen Bericht. Wenn weitere Kriterien , die nicht in der Kriterientabelle vorliegen (können), z. B. Einschränkung auf einen Datumsbereich, erforderlich sind, dann sind im Formular dafür weitere Textfelder für die An-/Eingabe solche Kriterienwerte vorzusehen.
Der Hinweis von Klaus bzgl. (essentieller!!) Normalisierung (hier als Teilaspekt: Mitführen eines Primärschlüssels zu eindeutigen Identifizierung einer "Kriterien"-Kombination) ist unbedingt zu beachten.
siehe auch Links 1 und 1a in meiner Signatur...
Die Abfrage an sich funktioniert aber ja einwandfrei- Daten wurde auch verifiziert- problematisch wird es nur aufgrund der vielen Kombinationsmöglickeiten...
Naja... ich denke ich sollte mir mal ein VBA Buch zulegen und da ein wenig reinschauen..
Vielen Dank für eure Hilfe und Mühe... :)
Hallo,
ZitatNaja... ich denke ich sollte mir mal ein VBA Buch zulegen und da ein wenig reinschauen..
das liegt nicht an VBA, das ist ein reines Problem mit der Tabellenstruktur. Bei korrektem Aufbau der DB wirst Du gar kein VBA benötigen.
Hallo,
irgendwie verstehst Du es nicht, oder ich...
Die Kombinationsmöglichkeiten und -anzahl werden von DIR vorgeben...
Die Kriterienwerte sind dafür da, nur solche Datensätze aus der Datentabelle zu filtern, die diesen Kriterienwerten bezogen auf die dazugehörenden Spalten in ihrer Anzahl genügen.
Das hat nichts mit VBA zu tun. Mit VBA wird lediglich die Abfrage (SQL-String) anhand der vorgegebenen Einträge in der Kriterientabelle dynamisch zusammengebaut und evtl. der Bericht geöffnet.
Alternativ könnte auch per VBA die zusammengesetzte "Where-Condition" an den "Where-Condition"-Parameter der OpenReport-Methode übergeben und damit der entspr. gefilterte Bericht geöffnet werden..
Im Grunde ist das Alles nur ein "Suchformular" mit einer Kriterien-Vorlage-Tabelle.