none
Abfragen in Access 2016

    Frage

  • Hallo,

    wenn ich eine Abfrage in Access 2016 als Abfrageentwurf erstelle, habe ich bei der Nutzung der Vergleichsoperatoren kleiner und größer ein Problem. Frage ich auf ein Textfeld mit kleiner (<) und mit kleiner gleich (<=) ab, erhalte ich das gleiche Ergebnis. Genauso verhält es sich bei der Abfrage mit größer (>) und größer gleich (>=).

    Hier ein Beispiel:

    Die beiden Abfragen <"K" und <="K" auf ein Kurztext-Feld liefern alle Werte kleiner "K". Bei der zweiten Abfrage (<=) sind die Namen, die mit "K" beginnen, ebenfalls nicht dabei.

    Die beiden Abfragen >"K" und >="K" liefern mir alle Werte inklusive des "K". Auch die erste Abfrage

    Kurioserweise liefert die Abfrage <"K" Oder >"K" sämtliche Werte der Tabelle.

    Kennt jemand das Problem? Bei den anderen Access-Versionen habe ich die Abfragen noch nicht ausprobiert.

    Vielen Dank für die Hilfe

    Olaf Reuter

    Freitag, 7. April 2017 11:11

Antworten

  • Hallo Olaf,

    es macht IMHO keinen Sinn, af ein Textfeld mit > oder < abzufragen.

    WHERE Feld <= 'K'

    würde dir alles liefern, was mit einem kleineren Buchstaben als K beginnt und Inhalte, die exakt "K" entsprechen. Aber natürlich nichts, was mit K beginnt und weitere Zeichen enthält.

    Das hat mit Access 2016 auch eher wenig bis gar nichts zu tun, sondern liegt in der Natur der Sache.

    Wenn Du das unbedingt so haben willst, musst Du wohl kombinieren.

    WHERE ( Feld < 'K' OR Feld LIKE 'K%' )

    Ich würde allerdings eher etwas wie:

    SELECT *
    FROM   Tabelle
    WHERE  SUBSTRING( <Feld>, 1, 1 ) BETWEEN 'A' AND 'K'

    verwenden, wobei die Syntax vom SQL Server kommt. Wie das in Access SQL geht, kann ich dir grad nicht sagen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Freitag, 7. April 2017 12:32
    Moderator
  • Hallo!

    <="K" liefert aufgrund des Textvergleichs nur Werte mit Anfangsbuchstaben < "K" und den Wert der genau "K" ist.

    "Ka" ist bereits größer als "K"

    Statt

    Feld < "K" or Feld like "K*" 

    könntest du auch 

    Feld < "L" schreiben. ;)

    In Jet sollte auch like "[A-K]*" funktionieren.

    @Stefan: Falls ein Index genutzt werden soll, ist die substring- (in Jet left-)Variante nicht zu bevorzugen. ;)

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Virtueller Access-Stammtisch

    Dienstag, 11. April 2017 13:44

Alle Antworten

  • Hallo Olaf,

    es macht IMHO keinen Sinn, af ein Textfeld mit > oder < abzufragen.

    WHERE Feld <= 'K'

    würde dir alles liefern, was mit einem kleineren Buchstaben als K beginnt und Inhalte, die exakt "K" entsprechen. Aber natürlich nichts, was mit K beginnt und weitere Zeichen enthält.

    Das hat mit Access 2016 auch eher wenig bis gar nichts zu tun, sondern liegt in der Natur der Sache.

    Wenn Du das unbedingt so haben willst, musst Du wohl kombinieren.

    WHERE ( Feld < 'K' OR Feld LIKE 'K%' )

    Ich würde allerdings eher etwas wie:

    SELECT *
    FROM   Tabelle
    WHERE  SUBSTRING( <Feld>, 1, 1 ) BETWEEN 'A' AND 'K'

    verwenden, wobei die Syntax vom SQL Server kommt. Wie das in Access SQL geht, kann ich dir grad nicht sagen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Freitag, 7. April 2017 12:32
    Moderator
  • Hallo!

    <="K" liefert aufgrund des Textvergleichs nur Werte mit Anfangsbuchstaben < "K" und den Wert der genau "K" ist.

    "Ka" ist bereits größer als "K"

    Statt

    Feld < "K" or Feld like "K*" 

    könntest du auch 

    Feld < "L" schreiben. ;)

    In Jet sollte auch like "[A-K]*" funktionieren.

    @Stefan: Falls ein Index genutzt werden soll, ist die substring- (in Jet left-)Variante nicht zu bevorzugen. ;)

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Virtueller Access-Stammtisch

    Dienstag, 11. April 2017 13:44