PDA

View Full Version : SQL where (a-b) = false



oulbrich
04-04-19, 06:45
Hallo zusammen,

MS Access mit IBM ODBC Treiber generiert ein SQL mit folgendem Syntax


select * from tabelle
where (Bmenge <> Lmenge) = -1


Bis V7R2M0 wurde das vom ODBC Treiber akzeptiert. AB V7R3M0 nicht mehr. Gibt Einstellungen im ODBC Treiber oder in MS Access damit der generierte MS Access SQL ausgeführt werden kann?

Gruss Olaf Ulbrich

Fuerchau
04-04-19, 08:46
Ich weiß nicht, was das "-1" noch bewirken soll.
Auch MS-Access macht sowas nicht von alleine, mir ist das zumindest unbekannt.
Ansonsten kann man es ggf. noch mit "true" oder "false" versuchen.

BenderD
04-04-19, 08:56
Ich weiß nicht, was das "-1" noch bewirken soll.
Auch MS-Access macht sowas nicht von alleine, mir ist das zumindest unbekannt.
Ansonsten kann man es ggf. noch mit "true" oder "false" versuchen.

... just to fool the russians! Warum denn einfach (where bmenge = lmenge), wenns auch komplizierter geht.

D*B

KM
04-04-19, 09:17
Soweit ich das verstanden habe bedeutet "-1" doch "True". Warum schreibst Du dann nicht einfach folgendes?

select * from tabelle
where Bmenge <> Lmenge

Gruß,
KM

oulbrich
04-04-19, 09:52
Ich codiere das so nicht sondern MS Access. Das Problem sitzt vor dem Rechner. Wir haben Mitarbeiter die im WYSIWYG Verfahren unter MS Access die Tabellenverknüpfungen und where Bedingungen zusammenklicken. MS Access generiert dann das SQL. Das hat bis V7R2 funktioniert. In V7R3 nicht mehr.

Fuerchau
04-04-19, 14:24
Das kann ich nicht so ganz glauben (V6R1):

> select * from kdst
where (kdkdnr <> 0) = -1
Token = ungültig. Gültige Token: FOR SKIP WITH FETCH ORDER UNION EXC
===> select * from kdst
where (kdkdnr <> 0) = -1

Bist du sicher, dass dieser SQL auch tatsächlich beim Treiber ankam?
Syntaktisch ist das nämlich generell nicht erlaubt.