Zahl in einem Textfeld mit between abfragen per SQL

23/07/2008 - 14:49 von Beat Hagmann | Report spam
Hallo NG

Irgendwie sehe ich den Wald vor lauter Bàumen nicht mehr. Nachfolgend
Mein Problem vereinfacht dargestellt.

Ich habe eine Tabelle mit 3 Feldern: ID(Zahl), difBetrag(Text), difDate(Text).

In der Tabelle gibt es folgende Datensàtze:

1 100 01.01.2005
2 200 01.01.2006
3 A 01.01.2006
4 300 B
5 400 01.01.2007
6 500 C

Die aufgabe bestand darin mit einer Query für das Feld difBetrag diejenigen
Zeilen
Auszugeben, welche 1. eine Zahl sind und 2. zwischen 200 und 40 liegen.

Bzw. eine Query für die Daten ind Feld disDate, welche ein gültiges Datum
haben und in einer bestimmten Periode Vorkommen.

In beiden Fàllen ist das zu prüfende Feld ein Textfeld.

Für das Datum habe ich folgede, funktioniernde Query gebastelt.

SELECT *
FROM Tabelle1
WHERE (((CDate([difDatum])) Between #1/1/2001# And #12/31/2006#)
AND ((IsDate([difdatum]))=True));

Für das Betrag-Feld wollte ich anlog der Feldkonvertierung folgendes Query
erstellen

SELECT *
FROM Tabelle1
WHERE (((CDbl([difBetrag]))<300) AND ((IsNumeric([difBetrag]))=True));

Bei der Ausführung erhalte ich den Fehler "Data Type mismatch in criteria
expression"

Was habe ich nicht beachtet ?

A2000

Gruss
Beat
 

Lesen sie die antworten

#1 Henry Habermacher
23/07/2008 - 15:19 | Warnen spam
Hallo Beat

"Beat Hagmann" wrote in message
news:

Ich habe eine Tabelle mit 3 Feldern: ID(Zahl), difBetrag(Text),
difDate(Text).

In der Tabelle gibt es folgende Datensàtze:

1 100 01.01.2005
2 200 01.01.2006
3 A 01.01.2006
4 300 B
5 400 01.01.2007
6 500 C

Die aufgabe bestand darin mit einer Query für das Feld difBetrag
diejenigen
Zeilen
Auszugeben, welche 1. eine Zahl sind und 2. zwischen 200 und 40 liegen.

Bzw. eine Query für die Daten ind Feld disDate, welche ein gültiges Datum
haben und in einer bestimmten Periode Vorkommen.

In beiden Fàllen ist das zu prüfende Feld ein Textfeld.

Für das Datum habe ich folgede, funktioniernde Query gebastelt.

SELECT *
FROM Tabelle1
WHERE (((CDate([difDatum])) Between #1/1/2001# And #12/31/2006#)
AND ((IsDate([difdatum]))=True));

Für das Betrag-Feld wollte ich anlog der Feldkonvertierung folgendes Query
erstellen

SELECT *
FROM Tabelle1
WHERE (((CDbl([difBetrag]))<300) AND ((IsNumeric([difBetrag]))=True));



Versuch's mal mit

WHERE VAL(difBetrag) BETWEEN 40 AND 200

Gruss
Henry

Microsoft MVP Office Access
Keine E-Mails auf Postings in NGs. Danke.
Access FAQ www.donkarl.com

Ähnliche fragen