Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: asgaarn am November 21, 2023, 19:27:42

Titel: runsql-Abfrage mit InStr-Suche möglich ?
Beitrag von: asgaarn am November 21, 2023, 19:27:42
Moin,

ich bin relativ neu im Thema und versuche mich gerade an einigen Dingen.
Leider komme ich bei meinem derzeitigen Projekt nicht weiter und finde bei Dr.Google nichts.

Vielleicht könnt ihr mir helfen ?

Ich habe eine Tabelle "Tabellenmuster" mit der Spalte "Musterspalte".
Innerhalb dieser "Musterspalte" stehen verschiedene Namenskombinationen, die wie folgt aussehen können:

Max Mustermann
Max
Max-Mustermann
MaxMustermann
Silvia Musterfrau
Musterchef Namenlos
etc...

Jetzt gehe ich her und sage, mit der Eingabe eines Vornamens per Formular mit Inputbox möchte ich die entsprechenden Einträge in eine zweite Tabelle ("Tabellenmuster2") extrahieren und hineinschreiben.

Die Variable für die Eingabe ist als vornameEingabe (string) deklariert.

Die "Problemzeile" ist jetzt folgende:

-------------------------------------- alles in einer Zeile
DoCmd.RunSql "SELECT * INTO Tabellenmuster2 FROM Tabellenmuster WHERE Musterspalte = '" & vornameEingabe & "';"
--------------------------------------

Das funktioniert soweit auch. Also wenn ich jetzt Max eingebe, dann werden alle Einträge mit dem Namen Max extrahiert. Und zwar alle Einträge, bei denen sich in der Musterspalte NUR 'Max' befindet.
Da Max in diesem Fall aber unter 4 verschiedenen Einträgen gespeichert ist, möchte ich alle diese Einträge im selben Zug mitnehmen.
Daher möchte ich jetzt den Befehl so ändern, dass der Inhalt der Musterspalte so durchsucht wird, dass alle Einträge, die im String "Max" enthalten, gewählt werden.

Meine Idee war, das ganze so zu gestalten:

----------------------------------------------- alles in einer Zeile
DoCmd.RunSql "SELECT * INTO Tabellenmuster2 FROM Tabellenmuster WHERE Musterspalte = '" & InStr(1, Musterspalte, vornameEingabe) & "';"
-----------------------------------------------

Funktioniert irgendwie nicht und scheint mir auch nicht richtig. Access meckert, dass 'Musterspalte' in diesem Fall nicht bekannt ist. Woher auch ..

Also habe ich den Eintrag so geändert:

----------------------------------------------- alles in einer Zeile
DoCmd.RunSql "SELECT * INTO Tabellenmuster2 FROM Tabellenmuster WHERE Musterspalte = '" & InStr(1, [Tabellenmuster].[Musterspalte], vornameEingabe) & "';"
-----------------------------------------------

Auch nix ...

Bin ich auf dem Holzweg ?
Habt ihr Tips ?
Gibt es eine ganze andere Möglichkeit ?

mfg
Olli
Titel: Re: runsql-Abfrage mit InStr-Suche möglich ?
Beitrag von: MzKlMu am November 21, 2023, 19:34:25
Hallo,
nimm den Joker zur Mustersuche. Zur Mustersuche ist Like (Wie) erforderlich.

CurrentDb.Execute "SELECT * INTO Tabellenmuster2 FROM Tabellenmuster WHERE Musterspalte Like '*" & vornameEingabe & "*'", DbFailOnError
Für Aktionsabfragen nimmt man Execute, weil die normalen Warnhinweise ausgeschaltet aber Fehlerhinweise eingeschaltet werden können.
Titel: Re: runsql-Abfrage mit InStr-Suche möglich ?
Beitrag von: asgaarn am November 22, 2023, 15:29:49
Ja sauber, ich danke dir für den Tip!
Das wars!