Wer findet den Fehler? ^^

Hallo, ich bin gerade leicht verwirrt. Ich will meine Filter weiter verknüpfen find aber den fehler hier drinne nicht. (Eigentlich ists mit Variablen)

rsMain.Filter = "((Bezeichnung1 LIKE '\*Edelstahl\*' AND Bezeichnung2 LIKE '\*Rund\*') OR (Bezeichnung1 LIKE '\*Edelstahl\*' AND Dimensionstext LIKE '\*Rund\*') OR (Bezeichnung1 LIKE '\*Edelstahl\*' AND Langtext LIKE '\*Rund\*') And (USER\_AB1 like '\*20\*'))"

hoffe mir kann wer helfen ^^

grüße digi :smile:

Hallo,

also auf dem ersten Blick sehe ich das die Abfrage nicht funktionieren kann.
Verwendest du Verknuepfungsoperatoren wie zum Bsp. And oder OR so dürfen sie nicht in Anführungsstrichen stehen, was bei dir aber der Fall ist :wink:

MfG Alex

Hi,
ich meine mich zu erinnern, dass ich das gleiche Problem auch schon hatte.
Die Filter-Property haut ab einer gewissen Anzahl von Verknüpfungen (AND/OR) einen Fehler raus.

Mach es doch einfach direkt per SQL.

Gruß.Timo

Falsch :wink:
Ich habs hinbekommen. Der Fehler der bestand, war der, dass man Für jeden Oder ausdruck den Filter den man hinzufügen will hineinschreiben muss und das geht nicht mit klammern.

Beispiel:

(((ausdruck1 AND ausdruck2)OR(ausdruck2 and ausdruck3))AND(AUDRUCK4)
GEHT NICHT!
Es geht nur:
((ausdruck1 AND ausdruck2 AND AUDRUCK4)OR(ausdruck2 and ausdruck3 AND AUDRUCK4))

Das Funktioniert jetz wunderbar.

Warum ich Filter verwende?
Einfach zu klären.
Schneller. Ungefähr 4 sekunden schneller als SQL :wink: Bzw die Änderung ist SOFORT sichtbar. Und das gefällt mir das bringt dynamik und es entlastet den Datenbank Server.

Und der nächste grund ist, dass ich noch nach anderen sachen Filtern MUSS weil das mit SQL nur schwierig geht und noch länger dauern würde.
Das heisst ich lade ein recordset Main wo alles drinne steht.

Man würde eine suchabfrage mit Variablen an die SQL DB abschicken und würde ein rsSuche brauchen, da man ja ansonsten ein DB Refresh durchführen müsste wenn man den urzustand der liste haben wöllte.
So kann man wenigstens mit Set FlexGrid.DataSource = rsMain oder rsSuche schnell die änderungen wirksam machen.

Hat schon alles seine gründe warum ich das alles auf Filter umgestellt habe :wink: und es geht ja jetz auch. Habe die verknüpfungen mit sub prozessen gemacht, wo ich abfrage wo gerade was drinne steht, das nehm ich das wird sofort zur laufzeit mit AND verknüppt und fertsch. Das selbe geht mit meiner suche und allem. Es ist definitiv schneller. Nur zu empfehlen :smile: So langsam bin ich Profi bei Filtern ^^

Grüße vom digi :smile:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Digitalfreak,

also nun mal ganz sachde. Ich programmiere sicherlich schon eine ganze Weile und habe auch diese und jene erfahrung gemacht. Auch gibt es sachen die ich nicht weiss oder wie ich mir net sicher bin!

Nur was ich definitiv weiss ist das wenn du einen Vergleichsoperator in Anführungszeichen setzt, so du niemals zum gewünschten Erfolg kommst. Im besten Falle erhaelst du ein falsches Ergebnis und im schlimmsten Falle schmiert dir dein Tool ab.

Wenn du mir nicht glaubst, dann bitteschon, dann lass ich dich in dem Glauben. Nur denke mal nach und probiere es mal aus … oder ist es zu kompliziert für dich?

Desweiteren interessiert es mich nicht wirklich warum du Filter verwendest. Nur hast du vielleicht einmal an folgendes gedacht.Das Steuerelemt erwartet eine DB. Diese weisst du ihr zu. Nun setzt du einen Filter. hmmm, wie bekommt das Steuerelement nun die gewünschten Daten. Stellt nicht doch evtl. intern eine SQL Abfrage ? *gruebel*

Auch dein Statement das SQL langsamer ist als so eine Filter Abfrage. Das Zweifel ich nun einmal ganz stark an! Hast du Indexe verwendet. War der SQL Syntax korrekt und auch optimiert ? etc… oder haben wir es erst garbnicht versucht und den bequemeren Weg gewählt ?

Nur mal nebenbei erwaehnt … Würdest du auf die Filter verzichten und dich lieber mit SQL anfreunden, so koenntest du dein Programm viel flexibler halten. Aber das ist deine Sache und die ein oder andere Erfahrung wirst du schon noch sammeln!

In diesem Sinne …