Access "wandelt" Abfrage um > Fehler

04/11/2008 - 15:57 von Franz | Report spam
Hallo Freunde

Ich habe in einer Verkaufsstatistik folgende Abfrage:

SELECT Orders.OrderID AS Orders, [Order Details].ProductID,
Orders.ShippedDate, Orders.InvoiceNumber, Orders.Storno,
Region.RegionCode, Orders.PeriodNr
FROM ((Orders INNER JOIN Employees ON Orders.EmployeeID Employees.EmployeeID) INNER JOIN Region ON Employees.Region Region.RegionCode) INNER JOIN [Order Details] ON Orders.OrderID [Order Details].OrderID
WHERE ((([Order Details].ProductID) Between 1 And 7 Or ([Order
Details].ProductID)) AND ((Orders.ShippedDate)>=#1/1/2007#) AND
((Orders.InvoiceNumber)>0) AND ((Orders.Storno)=0) AND
((Region.RegionCode)="C" Or (Region.RegionCode)="H") AND
((Orders.PeriodNr)f));

Diese Abfrage gibt die gewünschten Ergebnisse! Nun habe ich aber
plötzlich Fehler festgestellt und die Abfrage kontrolliert und dabei
konstatiert, das Access die Abfrage veràndert hat:

SELECT Orders.OrderID AS Orders, [Order Details].ProductID,
Orders.ShippedDate, Orders.InvoiceNumber, Orders.Storno,
Region.RegionCode, 16, Orders.PeriodNr
FROM ((Orders INNER JOIN Employees ON Orders.EmployeeID Employees.EmployeeID) INNER JOIN Region ON Employees.Region Region.RegionCode) INNER JOIN [Order Details] ON Orders.OrderID [Order Details].OrderID
WHERE ((([Order Details].ProductID) Between 1 And 7) AND
((Orders.ShippedDate)>=#1/1/2007#) AND ((Orders.InvoiceNumber)>0) AND
((Orders.Storno)=0) AND ((Region.RegionCode)="C" Or
(Region.RegionCode)="H") AND ((Orders.PeriodNr)f)) OR
(((Orders.ShippedDate)>=#1/1/2007#) AND ((Orders.InvoiceNumber)>0) AND
((Orders.Storno)=0) AND ((Region.RegionCode)="C" Or
(Region.RegionCode)="H") AND ((16)<>False) AND
((Orders.PeriodNr)f));

Ich kann nicht nachvollziehen, wie und wann das geschah (ich bin der
einzige User) aber ich bin sicher, dass ich das nicht selbst gemacht
habe!

Der Unterschied liegt beim Kriterium

WHERE ((([Order Details].ProductID) Between 1 And 7 Or ([Order
Details].ProductID))

welches von Acces aufgeteilt wurde:

WHERE ((([Order Details].ProductID) Between 1 And 7) und dann
AND ((16)<>False)

Kann mir hier jemand helfen?

Vielen Dank

Franz

 

Lesen sie die antworten

#1 Mark Doerbandt
04/11/2008 - 16:09 | Warnen spam
Hallo, Franz,

Franz:

SELECT Orders.OrderID AS Orders, [Order Details].ProductID,
Orders.ShippedDate, Orders.InvoiceNumber, Orders.Storno,
Region.RegionCode, Orders.PeriodNr
FROM ((Orders INNER JOIN Employees ON Orders.EmployeeID > Employees.EmployeeID) INNER JOIN Region ON Employees.Region > Region.RegionCode) INNER JOIN [Order Details] ON Orders.OrderID > [Order Details].OrderID
WHERE ((([Order Details].ProductID) Between 1 And 7 Or ([Order
Details].ProductID)) AND ((Orders.ShippedDate)>=#1/1/2007#) AND
((Orders.InvoiceNumber)>0) AND ((Orders.Storno)=0) AND
((Region.RegionCode)="C" Or (Region.RegionCode)="H") AND
((Orders.PeriodNr)f));

Diese Abfrage gibt die gewünschten Ergebnisse! Nun habe ich aber
plötzlich Fehler festgestellt und die Abfrage kontrolliert und dabei
konstatiert, das Access die Abfrage veràndert hat:

SELECT Orders.OrderID AS Orders, [Order Details].ProductID,
Orders.ShippedDate, Orders.InvoiceNumber, Orders.Storno,
Region.RegionCode, 16, Orders.PeriodNr
FROM ((Orders INNER JOIN Employees ON Orders.EmployeeID > Employees.EmployeeID) INNER JOIN Region ON Employees.Region > Region.RegionCode) INNER JOIN [Order Details] ON Orders.OrderID > [Order Details].OrderID
WHERE ((([Order Details].ProductID) Between 1 And 7) AND
((Orders.ShippedDate)>=#1/1/2007#) AND ((Orders.InvoiceNumber)>0) AND
((Orders.Storno)=0) AND ((Region.RegionCode)="C" Or
(Region.RegionCode)="H") AND ((Orders.PeriodNr)f)) OR
(((Orders.ShippedDate)>=#1/1/2007#) AND ((Orders.InvoiceNumber)>0) AND
((Orders.Storno)=0) AND ((Region.RegionCode)="C" Or
(Region.RegionCode)="H") AND ((16)<>False) AND
((Orders.PeriodNr)f));

Ich kann nicht nachvollziehen, wie und wann das geschah (ich bin der
einzige User) aber ich bin sicher, dass ich das nicht selbst gemacht
habe!

Der Unterschied liegt beim Kriterium

WHERE ((([Order Details].ProductID) Between 1 And 7 Or ([Order
Details].ProductID))

welches von Acces aufgeteilt wurde:

WHERE ((([Order Details].ProductID) Between 1 And 7) und dann
AND ((16)<>False)



setze mal selber ordentlich Klammern (im SQL) und probiere, ob "es"
wieder passiert.

Gruss - Mark

Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beitràge senden.

Ähnliche fragen