Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

In 3 Formularfeldern gleichzeitig suchen

Begonnen von lobo2000, Juli 05, 2016, 01:18:05

⏪ vorheriges - nächstes ⏩

lobo2000

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

MzKlMu

#1
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.
Gruß Klaus

MaggieMay

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] & '*'
Freundliche Grüße
MaggieMay

Beaker s.a.

Oder einfacher:

Select ...
From ...
Where (Filmtitel & Originaltitel & Alternativtitel) LIKE '*' & [suchtext] & '*'
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Lachtaube

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.
Grüße von der (⌒▽⌒)

MzKlMu

#5
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.
Gruß Klaus

Lachtaube

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.
Grüße von der (⌒▽⌒)

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Lachtaube

So würde es gehen, wenn das Trennzeichen selbst nicht Bestandteil eines Suchtexts sein wird.
Grüße von der (⌒▽⌒)

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Lachtaube

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, 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).
Grüße von der (⌒▽⌒)