Discussion:
Tabelleninhalt als Abfragekriterium
(zu alt für eine Antwort)
Juliane Nehring
2005-03-14 09:07:04 UTC
Permalink
Hallo zusammen,

ich habe eine Tabelle("Stichwort", Spalte "Text"), in der sich eine Vielzahl
von Stichworten befinden.
Ich habe nun eine Abfrage erstellt, die eine weiteren Tabelle("Aktenplan")
genau nach diesen Stichworten filtert und habe als Kriterium folgendes
eingetragen:

Wie "*&[Table]![Stichwort]![Text]&*".

Die Abfrage bringt aber kein Ergebnis, obwohl die Stichworte garantiert in
der Tabelle "Aktenplan" Spalte "Text"(Aktenbetreff) vorkommen.

Was habe ich falsch gemacht ?

Es soll am Ende eine Art Stichwortverzeichnis herauskommen, also : Stichwort
und alle Aktennummern nebeneinander, in deren Aktenbetreff dieses Stichwort
vorkommt.

Wer kann mir dazu noch ein paar Tipps geben?

Viele Grüße,

Juliane
Jürgen Volke
2005-03-14 10:25:44 UTC
Permalink
Hallo Juliane
Post by Juliane Nehring
ich habe eine Tabelle("Stichwort", Spalte "Text"), in der sich eine
Vielzahl von Stichworten befinden.
Ich habe nun eine Abfrage erstellt, die eine weiteren
Tabelle("Aktenplan") genau nach diesen Stichworten filtert und habe
Wie "*&[Table]![Stichwort]![Text]&*".
Die Abfrage bringt aber kein Ergebnis, obwohl die Stichworte
garantiert in der Tabelle "Aktenplan" Spalte "Text"(Aktenbetreff)
vorkommen.
Was habe ich falsch gemacht ?
nenne nie eine Spalte Text , da dies in Access eine Feld.Eigenschaft ist.

HTH Jürgen
Ekkehard Böhme
2005-03-14 14:16:58 UTC
Permalink
Hallo Juliane, Hallo Jürgen,
Post by Jürgen Volke
Hallo Juliane
Post by Juliane Nehring
ich habe eine Tabelle("Stichwort", Spalte "Text"), in der sich eine
Vielzahl von Stichworten befinden.
Ich habe nun eine Abfrage erstellt, die eine weiteren
Tabelle("Aktenplan") genau nach diesen Stichworten filtert und habe
Wie "*&[Table]![Stichwort]![Text]&*".
Die Abfrage bringt aber kein Ergebnis, obwohl die Stichworte
garantiert in der Tabelle "Aktenplan" Spalte "Text"(Aktenbetreff)
vorkommen.
Was habe ich falsch gemacht ?
nenne nie eine Spalte Text , da dies in Access eine Feld.Eigenschaft ist.
Mal abgesehen davon, dass Du natürlich Recht hast, ist das aber
1. nicht ihr Problem
2. nicht so schlimm, wenn sie die "[]" nicht vergisst
3. sie wohl eher sowas braucht:
Wie "'*" & DLookup(...) & "*'"
mfg
ekkehard böhme
Post by Jürgen Volke
HTH Jürgen
Steven Prohaska
2005-03-14 17:25:16 UTC
Permalink
Hallo zusammen,
Post by Ekkehard Böhme
Hallo Juliane, Hallo Jürgen,
Post by Jürgen Volke
Hallo Juliane
Post by Juliane Nehring
ich habe eine Tabelle("Stichwort", Spalte "Text"), in der sich eine
Vielzahl von Stichworten befinden.
Ich habe nun eine Abfrage erstellt, die eine weiteren
Tabelle("Aktenplan") genau nach diesen Stichworten filtert und habe
Wie "*&[Table]![Stichwort]![Text]&*".
Die Abfrage bringt aber kein Ergebnis, obwohl die Stichworte
garantiert in der Tabelle "Aktenplan" Spalte "Text"(Aktenbetreff)
vorkommen.
Was habe ich falsch gemacht ?
Ich hätte jetzt spontan vermutet, daß die Tabelle "Stichwort"
nicht Bestandteil der Abfrage ist:
SELECT ... FROM Aktenplan, Stichwort
Dann sollte es mit WHERE ... like "*" & [Stichwort]![Text] & "*"
eigentlich hinhauen.
D.h. in der Entwurfsansicht der Abfrage müssen Tabelle
"Aktenplan" und Tabelle "Stichwort" sichtbar sein.
Post by Ekkehard Böhme
Post by Jürgen Volke
nenne nie eine Spalte Text , da dies in Access eine
Feld.Eigenschaft ist.
Mal abgesehen davon, dass Du natürlich Recht hast, ist das aber
1. nicht ihr Problem
2. nicht so schlimm, wenn sie die "[]" nicht vergisst
Wie "'*" & DLookup(...) & "*'"
mfg
ekkehard böhme
... ansonsten geht es selbstverständlich auch mit DLookup.
Post by Ekkehard Böhme
Post by Jürgen Volke
HTH Jürgen
Gruß - Steven
Gottfried Lesigang
2005-03-15 01:04:08 UTC
Permalink
Hallo Steven!
Post by Steven Prohaska
Ich hätte jetzt spontan vermutet, daß die Tabelle "Stichwort"
SELECT ... FROM Aktenplan, Stichwort
Dann sollte es mit WHERE ... like "*" & [Stichwort]![Text] & "*"
eigentlich hinhauen.
Da fehlt doch noch ein bisschen "Fliegenschiss" (Hochkommas vor bzw. nach
dem "*") um den Text für "Like" als Text zu kennzeichnen:

WHERE DeinFeld LIKE '*" & [Stichwort]![Text] & "*'"

lg
Gottfried
Steven Prohaska
2005-03-15 17:15:43 UTC
Permalink
Hallo Gottfried,
Post by Gottfried Lesigang
Hallo Steven!
Post by Steven Prohaska
Ich hätte jetzt spontan vermutet, daß die Tabelle "Stichwort"
SELECT ... FROM Aktenplan, Stichwort
Dann sollte es mit WHERE ... like "*" & [Stichwort]![Text] & "*"
eigentlich hinhauen.
Da fehlt doch noch ein bisschen "Fliegenschiss" (Hochkommas vor bzw.
WHERE DeinFeld LIKE '*" & [Stichwort]![Text] & "*'"
Ich denke, das trifft aber nur zu, wenn man selbiges in VBA als
SQL-String definiert. In der reinen SQL-Ansicht der Abfrage
geht es sozusagen auch "unbeschissen" (Kurz gesagt geht es
dort sowohl mit als auch ohne, nachdem ich dies - nichtwissend -
mal getestet habe).

Sicher ist es jedenfalls kein Fehler, sich dies grundlegend anzuge-
wöhnen. Dies hat auf jeden Fall für so Gelegenheitsprogrammierer
wie mich den Vorteil, daß man nicht völlig "unerwartet" mal wieder
viel zu lange an einem SQL unter VBA rumpfriemelt, weil man
die kleinen aber wichtigen Fliegenschisse vergessen hat.

Beste Grüße - Steven
Josef Poetzl
2005-03-15 17:25:50 UTC
Permalink
Hallo!
Post by Steven Prohaska
Post by Gottfried Lesigang
WHERE DeinFeld LIKE '*" & [Stichwort]![Text] & "*'"
Ich denke, das trifft aber nur zu, wenn man selbiges in VBA als
SQL-String definiert. In der reinen SQL-Ansicht der Abfrage
geht es sozusagen auch "unbeschissen" (Kurz gesagt geht es
dort sowohl mit als auch ohne, nachdem ich dies - nichtwissend -
mal getestet habe).
Du behauptest:
SELECT * FROM Tabelle Where Feld like abc*
funktioniert?

Ob Du Dich da nicht irrst? ;-)

mfg
Josef
--
EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/
Michael Zimmermann
2005-03-15 17:44:43 UTC
Permalink
Hallo!
Post by Josef Poetzl
SELECT * FROM Tabelle Where Feld like abc*
funktioniert?
Ob Du Dich da nicht irrst? ;-)
Natürlich funktioniert das: Es bringt genau die erwartete
Syntaxfehlermeldung. ;-)

Gruß aus Mainz
Michael
Steven Prohaska
2005-03-15 17:58:51 UTC
Permalink
Hallo Josef,

Josef Poetzl wrote:
[...]
Post by Josef Poetzl
SELECT * FROM Tabelle Where Feld like abc*
funktioniert?
Nein, vielmehr dachte / meinte ich, daß sowohl
SELECT * FROM Tabelle Where Feld like "abc*"
wie auch
SELECT * FROM Tabelle Where Feld like '"abc*"'
in der SQL-Ansicht der Abfrage funktionieren.

Letzteres funktioniert aber nach erneutem Test nun doch
nicht (direkt in der Abfrage), liefert jedenfalls nicht die
gewünschten Datensätze.

Die richtige Schreibweise, wenn man den SQL in VBA
einsetzt wäre dann vermutlich;
SELECT * FROM Tabelle Where Feld like & '"abc*"'
(Aufgelöst: ' " abc* " ') ???
Post by Josef Poetzl
Ob Du Dich da nicht irrst? ;-)
Zumindest bin ich jetzt ziemlich irritiert.
Mein man den nun mit dem Fliegenschiß das "
oder das ' (Ich dachte es ist das ') ?

Gruß - Steven
Steven Prohaska
2005-03-15 19:23:00 UTC
Permalink
Hallo nochmal,

Steven Prohaska wrote:
[...]
Post by Steven Prohaska
Die richtige Schreibweise, wenn man den SQL in VBA
einsetzt wäre dann vermutlich;
SELECT * FROM Tabelle Where Feld like & '"abc*"'
(Aufgelöst: ' " abc* " ') ???
... nach etlichen Selbstversuchen, so funktioniert's in VBA
(jedenfalls gibt es brauchbare Ergebnisse):
SELECT * FROM Tabelle Where Feld Like '" & "abc" * "'
SELECT * FROM Tabelle Where Feld Like '" & "abc" & "*'
SELECT * FROM Tabelle Where Feld Like '*" & "abc" & "*'

Variante 1 funtioniert zwar, ist gegenüber 2 aber sicher die
"falsche", da sie spätestens bei Stern-vorne-und-hinten
(Like '*" & "abc" * "') scheitert. "Typenunverträglichkeit" bzw.
"Syntaxfehler", je nachdem wie falsch der Stern sitzt.

Ich bin also bezüglich der Schreibweise in VBA genau bei der
von Gottfried geposteten Variante gelandet ...

... hoffe jedenfalls, daß bei dieser ganzen, auch durch mich nicht
unerheblich verursachten Konfusion, für Juliane unterm Strich
noch eine brauchbare Antwort übriggeblieben ist.

Gruß - Steven
Josef Poetzl
2005-03-15 19:48:26 UTC
Permalink
Hallo!
Post by Steven Prohaska
... nach etlichen Selbstversuchen, so funktioniert's in VBA
SELECT * FROM Tabelle Where Feld Like '" & "abc" * "'
SELECT * FROM Tabelle Where Feld Like '" & "abc" & "*'
SELECT * FROM Tabelle Where Feld Like '*" & "abc" & "*'
Variante 1 funtioniert zwar, ist gegenüber 2 aber sicher die
"falsche", da sie spätestens bei Stern-vorne-und-hinten
(Like '*" & "abc" * "') scheitert. "Typenunverträglichkeit" bzw.
"Syntaxfehler", je nachdem wie falsch der Stern sitzt.
Ich bin also bezüglich der Schreibweise in VBA genau bei der
von Gottfried geposteten Variante gelandet ...
Wobei vom Zusammensetzen der SQL-Anweisung per VBA imo gar nicht die
Rede war.

In beiden Fällen (SQL/VBA) geht es aber um das Zusammensetzen mehrere
String-Werte.

Kurzfassung anhand der SQL-Anweisung (SQL-Ansicht des
Abfrageentwurfs):

SELECT * From Tab Where Feld like '*abc*'
=>
'*abc*' = '*' & 'abc' & '*' = '*' & AnderesTextfeld & '*'

Hier noch einmal eine (ausführlichere) Erklärung anhand eines
VBA-Beispiels.
Wiederholungen können ja nicht schaden. ;-)

Ziel: In VBA eine SQL-Anweisung zusammensetzen, welche in einer
Variablen gespeichert werden soll.

Die SQL-Anweisung soll so aussehen:
SELECT * FROM Tabelle Where Feld Like '*abc*'

Dim strSQL As String
strSQL = "SELECT * FROM Tabelle Where Feld Like '*abc*'"

Jetzt soll aber noch der Ausdruck "abc" variabel gehalten werden.

Dim strFilterWert as String
strFilterWert = "abc"

strSQL = _
"SELECT * FROM Tabelle Where Feld Like '*" & strFilterWert & "*'"

Debug.Print strSQL
=> SELECT * FROM Tabelle Where Feld Like '*abc*'

hth
Josef
--
EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/
Steven Prohaska
2005-03-15 20:06:49 UTC
Permalink
Hallo Josef,

Josef Poetzl wrote:
[...]
Post by Josef Poetzl
Kurzfassung anhand der SQL-Anweisung (SQL-Ansicht des
SELECT * From Tab Where Feld like '*abc*'
=>
'*abc*' = '*' & 'abc' & '*' = '*' & AnderesTextfeld & '*'
Hier noch einmal eine (ausführlichere) Erklärung anhand eines
VBA-Beispiels.
Wiederholungen können ja nicht schaden. ;-)
Danke für deine reichhaltigen Ausführungen, jetzt (glaube ich)
ist mir die Wirkungsweise der ' um einiges klarer.

Gruß und schönen Abend noch...
Steven
Gottfried Lesigang
2005-03-15 19:36:40 UTC
Permalink
Hallo Steven!
Post by Steven Prohaska
Nein, vielmehr dachte / meinte ich, daß sowohl
SELECT * FROM Tabelle Where Feld like "abc*"
wie auch
SELECT * FROM Tabelle Where Feld like '"abc*"'
in der SQL-Ansicht der Abfrage funktionieren.
Im Abfrageentwurf kannst du die "Anführungszeichen" *oder* die 'Hochkommas'
verwenden. Aber nicht beides gleichzeitig...
Post by Steven Prohaska
Letzteres funktioniert aber nach erneutem Test nun doch
nicht (direkt in der Abfrage), liefert jedenfalls nicht die
gewünschten Datensätze.
Ist ja klar, da nach einem String gesucht wird der auch die
Anführungszeichen enthält. Die Anführungszeichen brauchst du um Text zu
kennzeichnen - sowie du die Raute (#) benutzt um das Datum zu kennzeichnen.

Im Abfrageentwurf ist Access schlau genug, das egal zu finden. Für mich ist
das ein genau so lästiges "Feature" wie die deutschen Funktionen und das
Semikolon ;-)
Post by Steven Prohaska
Die richtige Schreibweise, wenn man den SQL in VBA
einsetzt wäre dann vermutlich;
SELECT * FROM Tabelle Where Feld like & '"abc*"'
Das geht so nicht!

In VBA ist das etwas ganz anderes. Dort ist das Anführungszeichen ein Teil
der Sprache. Wenn du es als Zeichen in einem String brauchst, dann musst du
es verdoppeln oder mit Chr() "einbauen".

Versuch mal

MsgBox "Hallo!"
MsgBox """Hallo""!"
MsgBox "Hallo " & "Du!"
MsgBox """Hallo"" " & "Du!"

Also: "SELECT * FROM Tabelle WHERE Feld LIKE '*" & "abc" & "*'"

wird zusammengesetzt zu: SELECT * FROM Tabelle WHERE Feld LIKE '*abc*'

HTH
Gottfried
Steven Prohaska
2005-03-15 20:12:10 UTC
Permalink
Hallo Gottfried,

Gottfried Lesigang wrote:
[...]
Post by Gottfried Lesigang
Im Abfrageentwurf kannst du die "Anführungszeichen" *oder* die
'Hochkommas' verwenden. Aber nicht beides gleichzeitig...
:-(
Das war mir so nicht bewußt, deswegen bin ich auch auf
einmal von der Abfrage auf die VBA-Schiene abgeschlittert.

Auch Dir herzlichen Dank für deine reichhaltigen Erklärungen.

Wünche noch schönen Abend,
Gruß - Steven

Loading...