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

ADO, Access und die Platzhalter

3 views
Skip to first unread message

Lutz Uhlmann

unread,
Jan 24, 2011, 4:31:47 AM1/24/11
to
Hallo NG,

Wir haben hier einen unerwarteten Effekt bei einer unserer
Access-Datenbanken entdeckt.

In eine 2003er Access-Datenbanken ist eine Abfrage abfAnlagen12 angelegt:

SELECT 1 AS NR, ID AS ANL_ID, Null AS TERM_ID, Null AS AUF_ID, Null AS
LETZTE, Null AS LFD, -1 AS PARA, Null AS PSTAT_ID, Null AS FAKTOR, Null
AS BEZEICHNUNG, Null AS VORSCHRIFT, Null AS KENARC_ID
FROM tabANLAGEN
WHERE KEN Like "1*" Or KEN Like "2*" OR VORCHECK=-1;

Diese Abfrage abfAnlagen12 bringt im Access 168 Datensätze - korrekt!

Wenn ich von extern per ADO auf abfAnlagen12 zugreife bekomme ich nur 84
Datensätze (VORCHECK=-1), da offensichtlich der Stringvergleich mit *
nicht mehr trifft.
Ändere ich in der Definition der Abfrage abfAnlagen12 den Vergleich auf
KEN Like "1%" Or KEN Like "2%" bringt mir diese in Access nur 84
Datensätze. Über den externen ADO-Zugriff erhalte ich nun aber alle 168.

Ich geh davon aus, daß ADO einen anderen Platzhalter nutzt.
Aber das Verhalten entspricht doch überhaupt nicht meiner Logik, wenn
ich eine Filterung in der Datenbank festlege und diese dann extern
völlig anders interpretiert wird.

Ich weiß auch, daß ich das Access-Verhalten über den ANSI92-Schalter an
% anpassen kann. Gibt es sowas auch für ADO um es an den * anzupassen?

Lutz

--
news.albasani.net

Josef Poetzl

unread,
Jan 24, 2011, 5:12:40 AM1/24/11
to
Hallo!

Lutz Uhlmann schrieb:
[...]
> Ich geh davon aus, da� ADO einen anderen Platzhalter nutzt.
> Aber das Verhalten entspricht doch �berhaupt nicht meiner Logik, wenn

> ich eine Filterung in der Datenbank festlege und diese dann extern

> v�llig anders interpretiert wird.

Du musst aber ber�cksichtigen, dass die Abfrage immer vom Client
ausgef�hrt wird, und darfst das nicht mit einer Sicht in einem aktiven
DBMS verwechseln. ;-)

> Ich wei� auch, da� ich das Access-Verhalten �ber den ANSI92-Schalter an
> % anpassen kann.

Das hilft dann aber auch nur f�r das direkte Nutzen der Abfrage.
Verwendest du die Abfrage in einem DAO.Recordset w�re wieder *
erforderlich.

>Gibt es sowas auch f�r ADO um es an den * anzupassen?

Du k�nntest alike statt like verwenden:
| WHERE KEN Alike "1%" Or KEN Alike "2%" OR VORCHECK=-1
Das sollte mit ado und dao funktionieren.

Oder du verzichtest auf like und nutzt > und <:
| WHERE (KEN >= "1" and KEN < "3") OR VORCHECK=-1


mfg
Josef

[fup2 de.comp.datenbanken.ms-access gesetzt]

0 new messages