Office: (Office 2003) Problem mit einer Suchfunktion

Helfe beim Thema Problem mit einer Suchfunktion in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, ich bräuchte mal wieder Hilfe *frown.gif* Ich habe in eine meiner Datenbanken eine Suchfunktion eingebaut. Die Tabelle tbl_Eigenschaften sieht... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Joghurt2, 14. Dezember 2007.

  1. Problem mit einer Suchfunktion


    Hallo,

    ich bräuchte mal wieder Hilfe *frown.gif*

    Ich habe in eine meiner Datenbanken eine Suchfunktion eingebaut.
    Die Tabelle tbl_Eigenschaften sieht in etwa so aus:
    Bezeichung, Eigenschaft1, Eigenschaft2, Eigenschaft3

    Eigenschaft1,2,3 werden in einer weiteren Tabelle nachgeschlagen, d.h. die drei Eigenschaften werden gemeinsam in einer Tabelle gepflegt

    In der Form "F_SuchFu" filtere ich in einem Listenfeld die Einträge nach den Eigenschaften.
    Man kann hier über drei Kombinationsfelder auswählen welche Eigenschaft das Objekt haben soll.

    Mein Problem ist folgendes:
    Manche Datensätze haben nur eine oder zwei Eigenschaft(en). Bei den restlichen steht dann "Keine Auswahl getroffen" drinne (als Defaultwert).

    Ein Datensatz sieht dann zB so aus:
    Mann, Groß, Dick, Keine Auswahl getroffen
    oder
    Mann, Groß, Keine Auswahl getroffen, Keine Auswahl getroffen

    Über sie Suchfunktion möchte ich nun alle großen Männer finden:
    Nun wähle ich im Kombinationsfeld1 (schränkt das Listenfeld nach Eigenschaft1 ein) "Groß" und Kombifeld2 und Kombifeld3 jeweils "keine Auswahl getroffen" (da dieser Wert Standardwert ist, steht dieser auch standardmäßig drin).

    Nun wird aber logischerweise nur der zweite Datensatz angezeigt.
    Es sollen aber beide Datensätze angezeigt werden.

    Versteht ihr mein Problem?

    Wie kann ich das richtig lösen?
    Vielleicht über ein Häkchen, dass die Einschränkung aktiviert oder deaktiviert (sprich den SQL-Code je nach Häkchen verändert)
    Jedoch habe ich keinen Plan, wie das gehen soll (allerdings habe ich über die Suchfunktion schon etwas zu dem Thema gefunden)

    Wie kann ich das am Besten lösen? Bin für Denkanstöße, Lösungen, etc aller Art offen :-)

    Danke im Voraus!

    MfG

    Jog

    :)
     
    Joghurt2, 14. Dezember 2007
    #1
  2. Hallo Jog,

    so auf die schnelle fällt mir nur ein:

    Kann dein DS auch lauten: Mann-Dick Groß?
    Wenn ja mußt du alle möglichen Kombinationen berücksichtigen.

    Die Einschränkungen setzt du am besten in Abhängigkeit des Wertes deines Kombis zusammen, in Etwa so:
    Code:
     
  3. Danke schonmal für deine Hilfe!

    Nein die Kombinationsmöglichkeiten wären da zu viele.
    Das ist das Schwierige. Die Eigenschaftenliste ist sehr variabel und deswegen auch die etwas komischen Beziehungen. Ansonsten wäre das anders gelöst.


    Nun zu deinem Code:
    So wie ich das verstehe, hört sich das ganz gut an.
    Mal schaun ob ich das richtig verstehe :-)

    1. Mein SQL-String an sich würde dann also noch keine "Where"-Einschränkungen beinhalten richtig?
    2. Die Einschränkungen schalten sich je nach Auswahl im Kombinationsfeld erst zu oder?
    sprich:
    2a, wenn "Keine Auswahl getroffen" ausgewählt wird, wird durch den SQL-Code keine Einschränkung hinzugeschaltet
    2b, wenn im ersten Kombionationsfeld etwas anderes als "K A g" gewählt wird schaltet sich die erste Einschränkung hinzu und das Listenfeld wird gefiltert
    2c, für Eigenschaft2,3 entsprechend.

    Sehe ich das richtig so?
    Genau so hätte ich es mir vorgestellt eigentlich.

    Mein SQL-Code enthält aber auch noch andere Einschränkungs-Möglichkeiten und ein order by etc. Zudem sind einige Tabellen mit Innerhoin etc vorhanden.
    Das heißt der SQL-Code ist schon relativ kompliziert.

    Was passiert wenn man nach ein ORDER BY und diversen anderen WHERE Klauseln und weiteren Dingen noch ein AND ranhängt?
    Das kann dann doch fast nicht funktionieren oder?

    Nochmal Danke im Voraus *wink.gif*
     
    Joghurt2, 15. Dezember 2007
    #3
  4. Problem mit einer Suchfunktion

    1 bis 2c : alles richtig

    Im Prinzip muss nur zuerst die WHERE-Klausel nach Bedarf dynamisch zusammengestellt werden und danach der komplette SQL-String. Das geht wunderbar.

    Anschauungsbeispiele gibt es in der Bsp.-DB Suchen in der DBWiki und im SEM-Suchformular.
     
  5. Hallo Jog,

    die Anzahl der Kombinationsmöglichkeiten ist kein Problem, wenn du deine Kombinations.- u. Tabellenfelder so benennst, das sie in einer Schleife mit Variabel durchlaufen werden können.

    Also: cboEigen1, cboEigen2 ....
    tabTab.Eigen1, tabTab.Eigen2....
     
  6. Eieiei. Ich komm schön langsam durcheinander.

    Danke auf alle Fälle schon mal:

    Noch eine Frage:
    Könnte es nicht Probleme geben, wenn ich in Kombifeld1 eine Eigenscahft eingebe, diese aber in Eigenschaft2 steht?
    Die drei Eigenschaftsfelder schlagen ja in der selben Tabelle die Werte nach.

    Es müsste also geprüft werden, ob der Wert im Kombifeld in Feld1, Feld2 oder Feld3 steht. Wenn man drei Werte eingibt, dann entsprechend.

    @ebs17: Ich schau mir die Beispiele mal an.

    @petbay: Die Benennung so wäre kein Problem. Aber wie muss ich dann weitermachen?
     
    Joghurt2, 16. Dezember 2007
    #6
  7. So, wie es Peter schon beschrieben hat:

    Bsp:
    sqlWHERE = "..." ' vorhandene Bedingung(en)
    Wenn Suchfeld1 Inhalt enthält, dann sqlWHERE = sqlWHERE & " And Bed1"
    Wenn Suchfeld2 Inhalt enthält, dann sqlWHERE = sqlWHERE & " And Bed2"
    ...
    Danach Komplettstring zusammenstellen:
    srtSQL = "SELECT ... FROM ..." & sqlWHERE & "ORDER BY ..."
    Diesen SQL-String dann als Datenherkunft für das Formular neu zuweisen.
     
  8. Problem mit einer Suchfunktion

    Einziges Problem: Kein gültiger Datensatz wird angezeigt.

    Die Kriterien müssen so gesetzt werden, dass auch die gewünschten Datensätze angezeigt werden können -> logische Verknüpfung der Kriterien beachten
     
  9. Dann versuche ich mal das mit Worten logisch zu verknüpfen und dann per Code. Bitte mitdenken und überprüfen für mich *Smilie

    Im Kombifeld1 gebe ich eine Eigenschaft ein: "groß"
    Diese Eigenschaft kann sowohl in Feld Eigenschaft1, Eigenschaft2 und Eigenschaft3 stehen. Deshalb muss ich überprüfen ob der Wert in einer der drei Eigenschaftsfelder steht.
    Wie schreibt man sowas?
    WHERE Kombifeldwert=Eigenschaft1 OR Kombifeld1=Eigenschaft2 OR ...schaft3
    Geht das theoretisch so?

    Will ich nun zwei Kriterien haben muss der String natürlich anders ausschauen.
    Es muss überprüft werden, ob der Wert aus Kombifeld1 in einem Eigenschaft1-3 steht und ob der Wert aus Kombifeld3 in Eigenschaft1-3 steht. Genau hier ergibt sich doch schon das erste Problem oder?
    Es sollen aber beide Eigenschaften vorhanden sein? Wie baue ich das in den String ein? Wie schaut sowas aus?
    Reicht da eine AND Verknüpfung:
    WHERE
    Kombifeldwert1=Eigenschaft1 OR Kombifeld1=Eigenschaft2 OR ...schaft3
    AND
    WHERE
    Kombifeldwert2=Eigenschaft1 OR Kombifeld1=Eigenschaft2 OR ...schaft3

    Ist das richtig so? Werden dann alle Datensätze angezeigt, bei denen die Werte aus Kombifeld1 und Kombifeld2 gleichzeitig in irgendeiner Kombination in den Eigenschaftsfeldern vorkommen? (Und nicht einfach alle Datensätze bei denen beide Suchkriterien einmal vorkommen?)

    Für drei Werte dann entsrpechend nochmal das ganze.

    Denke ich da so schon mal prinzipiell richtig?
     
    Joghurt2, 16. Dezember 2007
    #9
  10. Vorab: Wenn gleiche Werte in TabFeld1, TabFeld2 und TabFeld3 aufzufinden sind, sollte man über das Datenmodell nachdenken.

    Wenn Deine Tabelle nur eine Spalte Eigenschaft hat, tust Du Dich viel leichter, auch bei der Erstellung der Kriterienausdrücke.

    Sicher eher anders herum:
    WHERE Eigenschaft1=Kombifeld1 OR Eigenschaft2=Kombifeld1 OR ...
    Korrekte Schreibweise siehe #2
     
  11. Hallo,

    so war das mit der Schleife gedacht, bei 3 Kombis vielleicht nicht unbedingt nötig, aber naja.
    Code:
     
  12. \@ebs: Danke dir. Das Datenmodell ist leider korrekt so. Jeder denkt dabei an eine andere Beziehung (1:n). Die Eigenschaftenliste ist eben variabel und deswegen macht es das ganze ja so schwierig. Verstehst du? Wenn die Eigenschaftenliste fest stünde, hätte ich kein Problem, tut sie aber leider *frown.gif*
    Aber dass in allen drei Feldern die selbe Eigenschaft steht, ist mit Sicherheit nicht der Fall!
    Vielleicht habe ich aber einfach einen Denkfehler und mein Horizont ist für ein richtiges Datenmodell zu begrenzt.
    Es geht um eine kleine Mitarbeiterdatenbank.
    In der Haupttabelle sind die Stammdaten erfasst. Manche Mitarbeiter haben nun besondere Fähigkeiten (Im Normalfall eine, manchmal auch mehrere. Die Anzahl wurde hier auf drei festgesetzt). Die Liste der besonderen Fähigkeiten steht aber noch nicht fest. Das entwickelt sich im Laufe der Zeit. Die Eigenschaften sollten wenn möglich zentral verwaltet werden, um eine Einheitlichkeit zu gewähren.
    Wie würdest du das Datenmodell in diesem Falle ansetzen, um leichtere Handhabung zu gewährleisten?

    Im SQL war ein Schreibfehler. Anders rum muss es natürlich sein.
    Prinzipiell komme ich aber so hin oder?

    @Petbay: Auch dir Danke. Ich werde es die nächsten Tage noch mal anschauen. Hoffe ich bekomme es hin. Wenn nicht nerve ich einfach nochmal ...
     
  13. Problem mit einer Suchfunktion

    Das schreit geradezu nach einer 1:n-Beziehung. Mancher hat null Fähigkeiten, mancher mehr als 60.

    Stell Dir nur mal vor, die Anzahl der erfassbaren Fähigkeiten soll auf 6 erhöht werden. Das gibt eine Menge an möglichen Varianten. Dass dann der Anwender eine richtige Kriterienauwahl trifft, hat schon etwas mit Lotto zu tun, nichts mit Bedienerfreundlichkeit.
     
  14. Ja aber wenn ich eine 1:n Beziehung habe, wird es mit der Suchfunktion schwierig oder nicht?
    Mein Gedanke war der gleiche, allerdings kann ich dann keine Suchfunktion realisieren oder doch?
    Wenn ja: Wie geht das? Kann man den SQL-String dermaßen dynmaisch gestalten?

    Mir wäre eine solche Lösung auch viel lieber, allerdings habe ich keine Ahnung wie dann eine Suchfunktion zu machen ist.

    Danke dir im Voraus! Das wäre wiklich klasse, wenn das so gehen würde
     
  15. Erstelle am besten eine kleine Auszugs-DB, die Du hier einstellst.
    Wenn die in Acc2000-Format vorliegt, könnte ich die auch anschauen.
     
Thema:

Problem mit einer Suchfunktion

Die Seite wird geladen...
  1. Problem mit einer Suchfunktion - Similar Threads - Problem Suchfunktion

  2. Outlook Problem

    in Microsoft Outlook Hilfe
    Outlook Problem: Hallo zusammen, ich brauche Hilfe bei folgendem Problem. Ich bekomme pro Woche ca. 44 Mails vom immer gleichen Absender, no-reply@deutschepost.de mit immer dem gleichen PDF-Anhang. Die...
  3. Problem bei Fußnote

    in Microsoft Word Hilfe
    Problem bei Fußnote: Hallo zusammen, habe folgendes Problem. Sobald ich eine Fußnote einfüge, erscheint automatisch am Ende der Seite eine Art Überschrift mit der Zahl 1. Hier der Screenshot. Habe schon alles...
  4. Excel found a problem with one or more formula references in this worksheet

    in Microsoft Excel Hilfe
    Excel found a problem with one or more formula references in this worksheet: Liebes Forum, ich habe ein Problem, das viel durch das Internet geistert, aber nirgendwo gibt es eine erfolgreiche Lösung für: "Excel found a problem with one or more formula references in this...
  5. Zählenwenns Problem

    in Microsoft Excel Hilfe
    Zählenwenns Problem: Hallo. Ich möchte zählen wie oft der Name Person 2 vorkommt aber nur dann wenn darüber ein anderer Name steht. Also in C3 sollte 5 mal stehen aber in C4 nichts bzw. 0 Dann in C8 die 2 und in C9...
  6. Problem mit Seitenzahlen/Seitenbeschriftung

    in Microsoft Word Hilfe
    Problem mit Seitenzahlen/Seitenbeschriftung: Hallo, ich schreibe gerade meine Masterarbeit und habe ein kurioses Problem, bei dem ich nicht weiterkomme. Ich habe eine "beidseitige" Vorlage für die Masterarbeit der Universität verwendet. Da...
  7. Data Transform, Problem with delimiter

    in Microsoft Excel Hilfe
    Data Transform, Problem with delimiter: Hello Community, I encounter one problem with excel. When I export table from csv I have a delimiter semicolon, but it doesn't work. I found solution. If I would go to Power Query Editor - Split...
  8. Problem Kombinationfeld mit Suchfunktion Formular 2003

    in Microsoft Access Hilfe
    Problem Kombinationfeld mit Suchfunktion Formular 2003: Hallo Habe mal wieder ein Access Problem. Aufbau der Datenbank. Mastertabele 1:N Beziehung Detailtabele1 1:1 Beziehung (zu einer weiteren Detailtabele2 mit Datensätezen) Möchte nun von...
  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