Supportnet / Forum / Datenbanken
Suchkriterien in einer Abfrage erstellen
Frage
Hallo, ich will mir mit Access eine Fotodatenbank anlegen und bin auf folgendes Problem gestoßen.
Ich habe eine Spalte mit den Namen der Personen, die auf dem Foto zu sehen sind um Später fotos nach Namen suchen zu können.
Wie kann ich einen Befehl eingeben der verschiedene Namen in der gleichen Spalte sucht. Meine Namen habe ich durch ein Komma getrennt.
Vielleicht kann mir da jemand helfen.
Vielen Dank
Antwort 1 von Marie
Was verstehst Du unter einer Spalte? Suchst Du unterschiedliche Namen in einem einzigen Datenbankfeld? Oder stehen die Namen untereinander in unterschiedlichen Datensätzen in Deiner Datenbank? Wenn ja, wo hast Du die mit Komma getrennt??
Also Du kannst selbstverständlich nach allem suchen, aber halt hintereinander, nicht gleichzeitig.
Also falls Du Oma, Opa suchst in einer einzigen Zelle, in der Monika, Oma, Frank, Opa steht, dann ist das etwas aufwändiger, wie wenn Du nach einer Zeichenfolge suchst, die auch in Deiner Datenbank hintereinander steht oder nach zwei Namen in unterschiedlichen Zeilen.
Es geht alles, aber ich müsste halt mal wissen was genau Du willst. Erklär mal eben genauer.
Gruß Marie
Also Du kannst selbstverständlich nach allem suchen, aber halt hintereinander, nicht gleichzeitig.
Also falls Du Oma, Opa suchst in einer einzigen Zelle, in der Monika, Oma, Frank, Opa steht, dann ist das etwas aufwändiger, wie wenn Du nach einer Zeichenfolge suchst, die auch in Deiner Datenbank hintereinander steht oder nach zwei Namen in unterschiedlichen Zeilen.
Es geht alles, aber ich müsste halt mal wissen was genau Du willst. Erklär mal eben genauer.
Gruß Marie
Antwort 2 von lorf55
Hallo Johann,
angenommen deine Tabelle fotos sieht so aus:
Denn kannst du mit der INSTR-Funktion abfragen, ob eine Zeichenkette in PERSONEN enthalten ist: z.B. moni
mit
Wenn du alle Bilder mit Kevin oder Fritz suchen willst, verbindest du die INSTRs über OR:
ergibt
Nachteile der INSTR-Methode:
- Ist der Name falsch geschrieben, wird das Foto nicht gefunden,
- Wird nach evi gesucht wird auch kevin gefunden (kann man aber unterbinden, indem man Groß-/Kleinschreibung benutzt und mit binärer statt Textgenauigkeit arbeitet: InStr(1,[personen],"Evi",0) )
- Es tauchen bei gleichem Personenkreis immer wieder die selben Namen auf (vergrößert die Datenbank unnötig)
Besser ist es denn evtl., für häufig wiederkehrende Personen (nicht Namen ;-) ) jeweils eine Spalte anzulegen, die nur Ja oder Nein enthält.
Nun ja, in diesem Sinne
Gruß
lorf
angenommen deine Tabelle fotos sieht so aus:
FOTONAME PERSONEN
pict00567.jpg moni, fritz, shireen
pict00568.jpg oma, opa, moni
pict00569.jpg kevin, fritz
pict00570.jpg evi, pa, ma, justin
PICT0456.jpg oma
PICT3445.jpg kevin, omaDenn kannst du mit der INSTR-Funktion abfragen, ob eine Zeichenkette in PERSONEN enthalten ist: z.B. moni
mit
SELECT fotoname, personen
FROM fotos
WHERE (((InStr(1,[personen],"moni",1))<>False))ergibt:FOTONAME PERSONEN
pict00567.jpg moni, fritz, shireen
pict00568.jpg oma, opa, moniWenn du alle Bilder mit Kevin oder Fritz suchen willst, verbindest du die INSTRs über OR:
SELECT fotoname, personen
FROM fotos
WHERE (((InStr(1,[personen],"Kevin",1))<>False))
or (InStr(1,[personen],"fritz",1)<>False)ergibt
FOTONAME PERSONEN
pict00567.jpg moni, fritz, shireen
pict00569.jpg kevin, fritz
PICT3445.jpg kevin, omaWenn du alle Bilder mit Kevin und Fritz suchst, tauschst du das Or gegen AND.Nachteile der INSTR-Methode:
- Ist der Name falsch geschrieben, wird das Foto nicht gefunden,
- Wird nach evi gesucht wird auch kevin gefunden (kann man aber unterbinden, indem man Groß-/Kleinschreibung benutzt und mit binärer statt Textgenauigkeit arbeitet: InStr(1,[personen],"Evi",0) )
- Es tauchen bei gleichem Personenkreis immer wieder die selben Namen auf (vergrößert die Datenbank unnötig)
Besser ist es denn evtl., für häufig wiederkehrende Personen (nicht Namen ;-) ) jeweils eine Spalte anzulegen, die nur Ja oder Nein enthält.
Nun ja, in diesem Sinne
Gruß
lorf

