Announcement

Collapse
No announcement yet.

Problem mit Access Filter

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit Access Filter

    Hallo Zusammen,

    Warum bekomme ich, wenn ich der Filter-Eigenschaft einer ADO-Tabelle (Access-Datenbank) den Wert "(KUNDE = '_ALL_') AND ((ACIdent = '_ALL_') OR (ACIdent = 'DIHAP') OR (ACIdent = 'DIHAN')) AND ((Airport = '_ALL_') OR (Airport = 'EDDR'))" zuweise die Fehlermeldung: "Die Argumente sind vom falschen Typ, liegen außerhalb des Gültigkeitsbereich oder sind miteinander unvereinbar" ?
    Bei einer Paradox-Tabelle funktioniert der Filter einwandfrei.
    Außerdem funktioniert jeder Filterteil für sich auch ohne Probleme. Nur sobald die Doppelklammer im Spiel ist gehts nicht mehr.
    Vielleich hat jemand ne Idee.

  • #2
    Hallo,

    bei ADO kann man OR-Anweisungen nicht als Teil einer AND-Anweisung benutzen. Die Knowledge-Base sagt:

    Ursache
    Dieser Fehler kann auftreten, wenn die Filtersyntax falsch ist. Wenn das AND, OR Operatoren und Gruppierungsklauseln mit Klammern verwendet, tritt das häufig auf. Die ADO Filter Eigenschaft ermöglicht Sie zu Gruppenklauseln OR in Klammern und Klauseln AND ohne Klammern, obwohl sich keine Rangfolge für AND und OR befindet.

    Beispielsweise gibt der folgende Wert für einen Filter den Fehler zurück: (EmployeeID = 2 OR LastName = 'Fuller') AND FirstName = 'Andrew'

    Lösung
    Schreiben Sie ihre Filteranweisung neu, um das Problem zu beheben, um OR Klauseln, die in Klammern wie AND einer größeren Klausel Bestandteile gruppiert werden, nicht zu kombinieren.

    Die folgenden drei Änderungen geben den Fehler nicht zurück: (EmployeeID = 2 AND LastName = 'Fuller') OR FirstName = 'Andrew'
    (EmployeeID = 2 OR LastName = 'Fuller') OR FirstName = 'Andrew'
    (EmployeeID = 2 AND LastName = 'Fuller') AND FirstName = 'Andrew'

    Beachten Sie, dass die Regeln von Logik zu sehr unterschiedlichen Ergebnissen Sie an Stelle ihre AND- und ihre OR-Klauseln je nach positionieren, führen. Stellen Sie sicher, dass zwei ihre Filteranweisungen logisch äquivalent sind.

    Beispielsweise filtert folgende Syntax, die den Fehler zurückgibt: (EmployeeID = 2 OR LastName = 'Fuller') AND FirstName = 'Andrew'

    entspricht logisch der folgenden Filtersyntax, die den Fehler nicht veranlasst: (EmployeeID = 2 AND FirstName = 'Andrew') OR (LastName = 'Fuller' AND FirstName = 'Andrew')

    Status
    Es handelt sich hierbei um ein beabsichtigtes Verhalten.

    Grüße

    Juli

    Comment


    • #3
      Vielen Dank für die Antwort, dann werde ich mal meine Gerhinzellen anstrengen

      Comment

      Working...
      X