Hallo,
ich benutze Access 2013.
Ist es möglich in 3 Feldern gleichzeitig zu suchen?
1. Feld: Filmtitel
2. Feld: Originaltitel
3. Feld: Aternativtitel
Oft fällt mir der Filmtitel nicht ein, oder nur ein Teil des Original- oder Alternativtitels.
Wie kann ich das machen bzw. wie muß die Abfrage aussehen, damit ich per Parameterabfrage suchen kann?
Oder gibt es eine andere Möglichkeit? Von VBA habe ich wenig Ahnung.
Meinen Dank schon in Voraus
Hallo,
ZitatOder gibt es eine andere Möglichkeit?
wenn es verschiedene Titel zu einem Film gibt, so sollten die Titel in eine extra Tabelle mit einem Fremdschlüssel zum Film.
Die Titel dann in einer Spalte, in je einem Datensatz. Dann muss auch nur in einer Spalte gesucht werden.
Zweckmäßig wäre es dann eine weitere Tabelle anzulegen mit den Titelarten und in der extra Tabelle für den Titel auch eine FS zur Titelart zu führen.
Hi,
natürlich kannst du auch in drei Feldern suchen, indem du die Kriterien mit OR verknüpfst.
Beispiel:
Select ...
From ...
Where Filmtitel LIKE '*' & [suchtext] & '*' OR Originaltitel LIKE '*' & [suchtext] & '*' OR Aternativtitel LIKE '*' & [suchtext] & '*'
Oder einfacher:
Select ...
From ...
Where (Filmtitel & Originaltitel & Alternativtitel) LIKE '*' & [suchtext] & '*'
Nee, das Aneinanderreihen der Feldinhalte kann zu ungewollten Artefakten führen. Maggies Version ist zu bevorzugen, wobei diese von Hause aus auch eine Indexverwendung ausschließt.
Hallo,
Zitatkann zu ungewollten Artefakten führen
welche z.B. ?
Unabhängig davon ich würde ich in jedem Fall meine Version bevorzugen. :D
Nicht weil es meine ist, sondern weil es die Flexiblere und letztlich auch die einfachere Version ist.
Nun, mit etwas Fantasie ergibt die Endung eines Felds verkettet mit dem Anfung eines weiteren Felds ein Wort, dass in der Suche angegeben ist, aber in keinem Feld einzeln vorkommt.
Moin,
Zitatergibt die Endung eines Felds verkettet mit dem Anfung eines weiteren Felds
Abgesehen von Klaus' auf jeden Fall besserer Lösung (hatte ich gar nicht gelesen >:( )
könnte man das so umgehen:
Where (Filmtitel & "*" & Originaltitel & "*" & Alternativtitel) LIKE '*' & [suchtext] & '*' gruss ekkehard
So würde es gehen, wenn das Trennzeichen selbst nicht Bestandteil eines Suchtexts sein wird.
Hallo Lachtaube,
Hast schon recht, Maggies Statement ist auf jeden Fall das sicherste.
Wobei Indexnutzung durch LIKE schon per se ausgeschlossen ist (so
weit mir bekannt).
Die bessere Lösung ist auf jeden Fall Klaus'. Soll der TS sich entscheiden.
gruss ekkehard
Partiell werden Indizes durch den Like-Operator unterstützt - ab dem ersten Platzhalterzeichen (* bzw. %, ? bzw. _, #, [Zeichenliste], [!Zeichenliste]) ist allerdings Schluß. Leider gibt es dazu von Microsoft keine offizielle Dokumentation und ist auf JetShowPlan angewiesen.
Für wirklich große Volltext-Suchen (speziell im LAN-Betrieb) ist es sinnvoll, seine Texte abzuscannen, Worte in einer Tabelle abzulegen und Vorkommnisse in weiteren Tabellen festzuhalten. Artikel, Bindeworte u.ä. kann man dabei optional übergehen.
Besser wäre auf jeden Fall der Einsatz eines Datenbankservers, der Volltextsuchen unterstützt.
Aber auch mit Olaf Schidts vbRichClient5 (http://vbrichclient.com/#/en/About/), der SQLite3 mit FTS3-Modul implementiert, könnte man sich aushelfen.
Vorteil: Tabellen mittlerer Größe können im Speicher verweilen, um super schnellen Zugriff zu erlangen.
Nachteil: Es liegt (fast) keine Dokumentation vor (aber immerhin intuitiv gut zu verwenden) und die Bibliothek ist ein schwarzes Loch (Closed Source).