Between: kein AND in Between

06/02/2010 - 21:08 von Alexander Bierig | Report spam
Hallo miteinander,

ich habe da einige relativ lange Tabellen, bei denen ich Werte aus einem
Bereich an die Datensàtze zuordnen muss/will

Beispiel

Bsp.

TableA
Computer, ProdTag
KleinesBuro 14.01.2010
AlteSchlurre 22.12.2000
usw...

TableB
Prozessor, von, bis
Intel486, 01.03.1996, 27.12.2009


Die Angabe als SQL

select a.Computer, a.ProdTag, b.Prozessor from tableA as a left join tableB
as b on a.prodtag between b.von and b.bis group by a.Computer, a.ProdTag,
b.Prozessor;

Das Access làuft dann einige Zei problemlos udn irgenwann moniert es, dass
kein AND auf das Between folgt.
Immerhin kriegt man die SQL-Ansicht ja wieder und kann dann folgendes
machen:

select a.Computer, a.ProdTag, b.Prozessor from tableA as a left join tableB
as b on (a.prodtag between b.von and b.bis) group by a.Computer, a.ProdTag,
b.Prozessor ;
Dann ist das Access wieder zufrieden, obwohl es die Klammern beim Speichern
wegwirft.

Ich weiss, dass man das Statement mittels where auch schreiben kann, dann
sieht man es sogar im grafischen Tool - aber ich finde es so lesbarer.

Was kann man machen, damit das Access da nicht immer sich slebst im Weg
steht - die Jet-Engine selbst hat da ja keine Probleme.
Im VBA
docmd.runsql "select a.Computer, a.ProdTag, b.Prozessor from tableA as a
left join tableB as b on a.prodtag between b.von and b.bis group by
a.Computer, a.ProdTag, b.Prozessor ;"
kann 100mal hintereinander ausgeführt werden und zwar ohne Probleme

Die Frage ist, kann man dem Access sagen, dass es die Klammer NICHT
wegwerfen soll (wenn man sie als Mensch schon mal haben will)


MfG

Alex. Bierig
 

Lesen sie die antworten

#1 Peter Doering
06/02/2010 - 21:15 | Warnen spam
Hallo,

Alexander Bierig wrote:

TableA
Computer, ProdTag
KleinesBuro 14.01.2010
AlteSchlurre 22.12.2000
usw...

TableB
Prozessor, von, bis
Intel486, 01.03.1996, 27.12.2009
[...]
select a.Computer, a.ProdTag, b.Prozessor from tableA as a left join tableB
as b on a.prodtag between b.von and b.bis group by a.Computer, a.ProdTag,
b.Prozessor;

Das Access làuft dann einige Zei problemlos udn irgenwann moniert es, dass
kein AND auf das Between folgt.
Immerhin kriegt man die SQL-Ansicht ja wieder und kann dann folgendes
machen:

select a.Computer, a.ProdTag, b.Prozessor from tableA as a left join tableB
as b on (a.prodtag between b.von and b.bis) group by a.Computer, a.ProdTag,
b.Prozessor ;
Dann ist das Access wieder zufrieden, obwohl es die Klammern beim Speichern
wegwirft.

Ich weiss, dass man das Statement mittels where auch schreiben kann,



Das wuerde ich machen.

dann sieht man es sogar im grafischen Tool - aber ich finde es so lesbarer.



Wenn du es so lesbarer findest, dann beziehst du dich sicher auf SQL. Dann
stellt sich die Frage, warum du ueberhaupt in die Entwurfsansicht der
Abfrage gehst, die bekanntermassen nicht jede SQL-kompatible Syntax
unterstuetzt. Ein bekanntes Beispiel: DELETE FROM Tab1. Damit kracht's in
der Entwurfsansicht.

Was kann man machen, damit das Access da nicht immer sich slebst im Weg
steht - die Jet-Engine selbst hat da ja keine Probleme.



Abfrage in der SQL-Ansicht speichern und danach nicht mehr in die
Entwurfsansicht wechseln.

Im VBA
docmd.runsql "select a.Computer, a.ProdTag, b.Prozessor from tableA as a
left join tableB as b on a.prodtag between b.von and b.bis group by
a.Computer, a.ProdTag, b.Prozessor ;"
kann 100mal hintereinander ausgeführt werden und zwar ohne Probleme



Netter Versuch. ;-)

RunSQL auf SELECT... geht *garantiert* nicht.

Gruss - Peter

Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Ähnliche fragen