Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Inhalt von Textfeld als Zahl im SQL-WHERE-Teil behandeln

89 views
Skip to first unread message

Stefan Wirrer

unread,
Nov 4, 2010, 7:16:20 AM11/4/10
to
Hallo,

ich m�chte in einem SQL-Statement den Inhalt einer
zentralen Wertetabelle filtern.
SELECT .... FROM ...
WHERE CLng([ValChar_Value]) > 25

Leider bekomme ich die Fehlermeldung:
"Datentypen in Kriterienausdruck unvertr�glich."

Wie geht das in Access (2003)?

Hintergrund:
In der Tabelle sollen alle m�glichen Werte (Text, Datum, Zahl, ...)
in einem Feld gespeichert werden.

G��e aus dem sonnigen M�nchen
Stefan

Winfried Sonntag

unread,
Nov 4, 2010, 7:35:11 AM11/4/10
to
Am 04.11.2010 schrieb Stefan Wirrer:

> ich mᅵchte in einem SQL-Statement den Inhalt einer

> zentralen Wertetabelle filtern.
> SELECT .... FROM ...
> WHERE CLng([ValChar_Value]) > 25
>
> Leider bekomme ich die Fehlermeldung:
> "Datentypen in Kriterienausdruck unvertrᅵglich."

Hast Du es schon mit VAL probiert?

Servus
Winfried
--
Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
Community Forums NNTP Bridge: http://communitybridge.codeplex.com/
Access-FAQ: http://www.donkarl.com/AccessFAQ.htm
Access-Stammtisch: http://www.access-muenchen.de

Stefan Wirrer

unread,
Nov 4, 2010, 7:53:08 AM11/4/10
to
Hallo Winfried,

Winfried Sonntag schreibselte:


> Am 04.11.2010 schrieb Stefan Wirrer:
>

>> ich möchte in einem SQL-Statement den Inhalt einer


>> zentralen Wertetabelle filtern.
>> SELECT .... FROM ...
>> WHERE CLng([ValChar_Value]) > 25
>>
>> Leider bekomme ich die Fehlermeldung:

>> "Datentypen in Kriterienausdruck unverträglich."


>
> Hast Du es schon mit VAL probiert?

jetzt ja ;-)
Gleiche Fehlermeldung.

Servus
Stefan


Josef Poetzl

unread,
Nov 4, 2010, 8:02:51 AM11/4/10
to
Hallo!

Stefan Wirrer schrieb:
> ich möchte in einem SQL-Statement den Inhalt einer


> zentralen Wertetabelle filtern.
> SELECT .... FROM ...
> WHERE CLng([ValChar_Value]) > 25
>
> Leider bekomme ich die Fehlermeldung:

> "Datentypen in Kriterienausdruck unverträglich."

NULL-Werte sind ausgeschlossen?
clng(null) und val(null) ergeben schlechte Vergleichswerten. ;-)

> Hintergrund:
> In der Tabelle sollen alle möglichen Werte (Text, Datum, Zahl, ...)


> in einem Feld gespeichert werden.

Ist das gut, wenn man dann danach filtern will?
Oder sind in der Tabelle nur so wenige DS enthalten, dass keine
Index-Suche benötigt wird?

mfg
Josef

BTW: ich setzte ein Follow-up nach de.comp.datenbanken.ms-access

Stefan Wirrer

unread,
Nov 4, 2010, 9:38:57 AM11/4/10
to
Hallo Winfried,

Winfried Sonntag schreibselte:


> Am 04.11.2010 schrieb Stefan Wirrer:

>> ich möchte in einem SQL-Statement den Inhalt einer


>> zentralen Wertetabelle filtern.
>> SELECT .... FROM ...
>> WHERE CLng([ValChar_Value]) > 25
>>
>> Leider bekomme ich die Fehlermeldung:

>> "Datentypen in Kriterienausdruck unverträglich."


>
> Hast Du es schon mit VAL probiert?

ja ... nachdem ich die Testabfrage gelöscht und neu
erstellt habe, funktioniert's mit VAL.
Aber das hilft nur begrenzt weiter ... ich hab ja
noch noch den Datentyp 'Datum' zu verarbeiten.

Servus
Stefan


Jörg Burzeja

unread,
Nov 4, 2010, 3:42:55 PM11/4/10
to
Am 04.11.2010 14:38, schrieb Stefan Wirrer:

>>> ich mᅵchte in einem SQL-Statement den Inhalt einer


>>> zentralen Wertetabelle filtern.
>>> SELECT .... FROM ...
>>> WHERE CLng([ValChar_Value])> 25
>>>
>>> Leider bekomme ich die Fehlermeldung:

>>> "Datentypen in Kriterienausdruck unvertrᅵglich."


>>
>> Hast Du es schon mit VAL probiert?

> ja ... nachdem ich die Testabfrage gelᅵscht und neu


> erstellt habe, funktioniert's mit VAL.
> Aber das hilft nur begrenzt weiter ... ich hab ja
> noch noch den Datentyp 'Datum' zu verarbeiten.

Wie wᅵre es mit der Idee, auf nicht numerische Zeichen zu prᅵfen?

WHERE feldname NOT LIKE '%[^0-9]%'

Alle Datensᅵtze, die nicht nummerische Zeichen haben, werden in einer
Unterabfrage ausgeschlossen. Auf den Rest wendest Du Deine Bedingung '>
25' an. Dann sollte es auch keine Unvertrᅵglichkeit mehr geben.


--
Viele Grᅵsse
Jᅵrg

++ Where Do you want to go tomorrow? ++
++ http://schneegans.de/usenet/microsoft-umzug/ ++

Stefan Wirrer

unread,
Nov 5, 2010, 4:05:33 AM11/5/10
to
Hallo Jörg,

Jörg Burzeja schreibselte:


> Am 04.11.2010 14:38, schrieb Stefan Wirrer:
>

>>>> ich möchte in einem SQL-Statement den Inhalt einer


>>>> zentralen Wertetabelle filtern.
>>>> SELECT .... FROM ...
>>>> WHERE CLng([ValChar_Value])> 25
>>>>
>>>> Leider bekomme ich die Fehlermeldung:

>>>> "Datentypen in Kriterienausdruck unverträglich."


>>>
>>> Hast Du es schon mit VAL probiert?

>> ja ... nachdem ich die Testabfrage gelöscht und neu


>> erstellt habe, funktioniert's mit VAL.
>> Aber das hilft nur begrenzt weiter ... ich hab ja
>> noch noch den Datentyp 'Datum' zu verarbeiten.
>

> Wie wäre es mit der Idee, auf nicht numerische Zeichen zu prüfen?


> WHERE feldname NOT LIKE '%[^0-9]%'

> Alle Datensätze, die nicht nummerische Zeichen haben, werden in einer


> Unterabfrage ausgeschlossen. Auf den Rest wendest Du Deine Bedingung

> '> 25' an. Dann sollte es auch keine Unverträglichkeit mehr geben.
das Problem ist, dass ich in der Abfrage mehrere Tabellen verknüpft habe
und die WHERE-Klausel auch auf 'ungefilterte' DS zugreift, daher die
Probleme.
Ich brauch das alles aber nicht mehr, da ich das jetzt anders ausführe.
S. anderen Ast in diesem Thread.

Viele Grüße
Stefan

Stefan Wirrer

unread,
Nov 5, 2010, 4:09:56 AM11/5/10
to
> Ich brauch das alles aber nicht mehr, da ich das jetzt anders
> ausführe. S. anderen Ast in diesem Thread.
siehe de.comp.datenbanken.ms-access

Grüße
Stefan


Jörg Burzeja

unread,
Nov 5, 2010, 10:15:03 AM11/5/10
to
Am 05.11.2010 09:05, schrieb Stefan Wirrer:

>>>>> ich möchte in einem SQL-Statement den Inhalt einer
>>>>> zentralen Wertetabelle filtern.
>>>>> SELECT .... FROM ...
>>>>> WHERE CLng([ValChar_Value])> 25
>>>>>
>>>>> Leider bekomme ich die Fehlermeldung:
>>>>> "Datentypen in Kriterienausdruck unverträglich."
>>>>
>>>> Hast Du es schon mit VAL probiert?
>>> ja ... nachdem ich die Testabfrage gelöscht und neu
>>> erstellt habe, funktioniert's mit VAL.
>>> Aber das hilft nur begrenzt weiter ... ich hab ja
>>> noch noch den Datentyp 'Datum' zu verarbeiten.
>>
>> Wie wäre es mit der Idee, auf nicht numerische Zeichen zu prüfen?
>> WHERE feldname NOT LIKE '%[^0-9]%'
>> Alle Datensätze, die nicht nummerische Zeichen haben, werden in einer
>> Unterabfrage ausgeschlossen. Auf den Rest wendest Du Deine Bedingung
>> '> 25' an. Dann sollte es auch keine Unverträglichkeit mehr geben.

> das Problem ist, dass ich in der Abfrage mehrere Tabellen verknüpft habe
> und die WHERE-Klausel auch auf 'ungefilterte' DS zugreift, daher die
> Probleme.

Ja, deswegen sagte ich ja auch Unterabfrage - es werden also an das
'WHERE' nur noch gefilterte (bereinigte) Datensätze übergeben.

> Ich brauch das alles aber nicht mehr, da ich das jetzt anders ausführe.
> S. anderen Ast in diesem Thread.

Habe ich etwas später auch gesehen.


--
Viele Grüsse
Jörg

Josef Poetzl

unread,
Nov 5, 2010, 10:26:29 AM11/5/10
to
Hallo!

Jörg Burzeja schrieb:


> Ja, deswegen sagte ich ja auch Unterabfrage - es werden also an das
> 'WHERE' nur noch gefilterte (bereinigte) Datensätze übergeben.

Wie meinst du das mit der Unterabfrage?

Eventuell so:
select
..
From
(
select ...
from ...
where 1. Filtereben
) X
where
2. Filterebene

Bei solchen Ausdrücken musst du aufpassen. Das wird vom
Abfrageoptimierer gerne zu einem einzigen Filterausdruck
zusammengefasst.
Mit distinct könnte man eventuell etwas nachhelfen.

select
..
From
(
select distinct ...
from ...
where 1. Filtereben
) X
where
2. Filterebene

Ich bin mir allerdings nicht sicher, ob das bei Jet immer wirkt.


mfg
Josef

Jörg Burzeja

unread,
Nov 5, 2010, 11:21:33 AM11/5/10
to
Am 05.11.2010 15:26, schrieb Josef Poetzl:


>> Ja, deswegen sagte ich ja auch Unterabfrage - es werden also an das
>> 'WHERE' nur noch gefilterte (bereinigte) Datensätze übergeben.
>
> Wie meinst du das mit der Unterabfrage?
>
> Eventuell so:
> select
> ..
> From
> (
> select ...
> from ...
> where 1. Filtereben
> ) X
> where
> 2. Filterebene


Ja, genau so wäre der Plan gewesen.

0 new messages