PDA

Vollständige Version anzeigen : Maximale Filterlänge für Formular


hosh
02.01.2002, 16:11
Hallo allerseits,

eines vorweg: Ich arbeite vorwiegend mit Makros und bin mit VBA so gut wie gar nicht vertraut & überhaupt noch recht neu im Access-Geschäft.

Hier mein Problem:
Ich habe ein Filterformular erstellt, mit dessen Hilfe der Filter für ein weiteres Formular eingestellt werden kann. Es hat 2 Textfelder, die Suchbegriff-Eingaben erlauben. Es sollen nur jene Datensätze angezeigt werden, die die eingegebenen Begriffe enthalten. Und zwar - und hier liegt das Problem - unabhängig davon, in welchem der 5 zu durchsuchenden Felder sich die Begriffe befinden.

Mit einem Such-Begriff funktioniert das ebenso wunderbar, wie mit zwei Begriffen, die "oder-verknüpft" sind.

Problematisch: die UND-Verknüpfung (Nur Datensätze, die beide Begriffe aufweisen - egal in welchem Feld - sollen angezeigt werden.)

Zunächst reichte der Platz (die Zeilenanzahl) im Abfrage-Entwurfsfenster nicht aus. Dieses Problem habe ich gehofft durch die Verwendung des SQL-Fensters lösen zu können. Ich hab mir mühsam ein paar SQL-Grundlagen angeeignet und es auch geschafft, den entsprechenden Code so einzugeben, dass Abfragen funktionieren.

Nur kann ich diese Abfragen leider nicht als Filter verwenden. Es erscheint die Fehlermeldung: "Der filterbezogene Vorgang wurde abgebrochen. Der Filter wäre zu lang geworden."

Wie lange darf denn ein Filter in ACCESS 2000 maximal sein? Und wie wird das gemessen (Stringlänge, Zeilenanzahl in der Entwurfsansicht)?

Es würde mich freuen, wenn mir das jemand beantworten würde.

Vielleicht hat ja auch jemand eine Idee, was ich sonst so anstellen könnte, um das Problem zu lösen (wenn's denn sein muss gerne auch mit VBA). Wäre klasse.

Danke schonmal
Hosh

Kurt aus Kienitz
02.01.2002, 16:40
Hallo,

Mal eine ganz andere Idee.

Man angenommen Deine Tabelle sieht so aus:

ID | F1 | F2 | F3 | F4 | F5
---+------+------+------+------+-------
1 | Eins | Zwei | Drei | Vier | Fünf
2 | Drei | Vier | Zwei | Fünf | Sechs
3 | Eins | Zwei | Vier | Fünf | Sechs

Wenn Du nun alle Zeilen haben willst in denen sowohl "Drei" als auch "Zwei" vorkommt, dann müsste das auch so funktionieren:

SELECT * FROM DeinerTabelle
WHERE F1 & F2 & F3 & F4 & F5 LIKE '*Zwei*'
AND F1 & F2 & F3 & F4 & F5 LIKE '*Drei*';

Wenn man dann vorher eine Abfrage erstellt, in der man F1 - F5 zu einem Feld zusammen fasst, dann wird das Ganze noch handlicher.

Sascha Trowitzsch
02.01.2002, 16:49
Hi hosh,

Filterlänge: (Messeinheit: Zeichen)
Länge in A97: 1024
In A2000: 2048 (Hab's noch nicht überprüft.)

In der Access-Hilfe wird was von 32000 gelabert, das ist aber Unfug.

Ansonsten kannst du das mit den UNDs schon so machen. Damit der SQL-Sring nicht zu lang wird, solltest du für die Tabellen- und Feldbezeichner möglichst kurze Begriffe nehmen.
Du kannst auch die Felder in der Abfrage quasi umbennenen. Beispiel: Statt

SELECT *
FROM TabelleXYZ
WHERE (TabelleXYZ.DasEllenlangeFeldNummero1 = [Suchbegriff]
AND
TabelleXYZ.DasNochLängereFeldBezeichnungNummero2 =[Suchbegriff])

machst du

SELECT TabelleXYZ.DasEllenlangeFeldNummero1 AS N1,
TabelleXYZ.DasNochLängereFeldBezeichnungNummero2 AS N2
WHERE ([N1]=[Suchbegriff] AND [N2]=[Suchbegriff])

Das mit WHERE ist ja der Filter und der zweite ist kürzer als der erste.

Wenn das alles nicht reicht, dann ist tatsächlich VBA gefragt.

Schau dann mal in der Hilfe unter FindFirst oder Seek.

Ciao, Sascha

hosh
02.01.2002, 16:52
Hallo Kurt, hallo Sascha,

danke schön, mit derart schnellen Antworten hatte ich nicht wirklich gerechnet. Eure Infos sind jeweils für sich schon ausgesprochen hilfreich. Erfreulicherweise ergänzen sie sich darüberhinaus so gut, dass ich's jetzt - zumindest auf den ersten Blick - wirklich hinbekommen sollte.

Grüße & die besten Wünsche fürs neue Jahr
hosh