Hallo,
ich sitze gerade an einem Problem bezüglich Access.
Ich habe eine Tabelle mit meinen Kunden, den Verkaufsdatum und sonstigen.
Nun möchte ich eine Abfrage starten, die nur die Verkäufe eines bestimmten Zeitraums anzeigt.
Die Abfrage soll immer zum Ende des Monats hin erstellt werden.
Angenommen wir befinden uns jetzt im am 25.2.2016 soll sie folgende Verkäufe zeigen:
-Verkäufe bis spätestens Ende Januar.
-Verkäufe seit einschließlich Januar 2013.
Das Intervall ist also größer als vor 37 Monaten bis einshcließlich vor einem Monat.
Gerade für die zweite Bedingung (kleiner gleich vorheriger Monat) habe ich schon die Formel:
Jahr([SalesDate])*12+DatTeil('m';[SalesDate])=Jahr(Datum())*12+DatTeil("m";Datum())-1
Diese gebe ich nun bei der Abfrage als Kriterium unter der Spalte SalesDate an. Dann zeigt er mir auch wunderbar nur die Verkäufe von Januar 2016.
Jetzt wollte ich mal angeben, dass er mir nicht nur alle von Januar 2016 angibt, sondern auch die die davor sind. Aber das kann ich über die kleiner/größer gleich Zeichen nicht mehr darstellen in Access.
Weiß jemand Rat?
Vielen Dank,
Marcus
Hallo,
wenn ich es richtig deute, willst Du alle Verkäufe anzeigen, die
zwischen 01.01.2013 und 31.01.2016
liegen.
Dann lautet das Kriterium (bei deutschen Access) für die Spalte "SalesDate" etwa so:
zwischen #01.01.2013# und #31.01.2016#
Wenn das Enddatum sich am akt. Datum orientiert und dabei der Letzte des Vormonats genommen werden soll, dann etwa so:
zwischen #01.01.2013# und DateSerial(Jahr(Datum());Monat(Datum());0)
Wodran sich das Startdatum orientiert, mußt Du selber wissen...
Hi!
Danke erstmal für die schnelle Hilfe.
In der Tat suche ich in diesem Monat die Verkäufe zwischen 1.1.2013 und 31.1.2016. Im März dann zwischen 1.2.2013 und 29.2.2016. Und so weiter. Sowohl Enddatum als auch Startdatum sind flexibel.
Ich möchte die Abfrage nun so gestalten, dass ich keine expliziten Datumsangaben verwenden muss, weil dann müsste ich ja jeden Monat das Kriterium verändern. Es soll möglichst automatisch funktionieren.
Ich hab es soweit jetzt hinbekommen...
Ich bräuchte nur noch eine "Formel" die dem Programm sagt, dass es mir die Sales von vor 3 Jahren und 1 Monat anzeigen soll.
Wenn es also Februar 2016 ist, dann soll er mir die Daten von Januar 2013 angeben. Wenn es März 2016 ist, dann die Verkäufe von Februar 2013 usw.
Geht das?
Fortführung des Vorschlages von Franz:
SELECT
*
FROM
tblVerkaufe
WHERE
Verkaufsdatum >= DateSerial(Year(Date() - 3, Month(Date()) - 1, 1)
AND
Verkaufsdatum < DateSerial(Year(Date(), Month(Date()), 1)
(Das ist eine vollständige Abfrage, nicht ein Kriterium.)
Hm...das verstehe ich leider nicht ganz.
Die Tabelle aus der er sich die Daten ziehen soll heißt:
KIVACustomer
Die besteht aus den Feldern:
-CustomerID
-ContractID
-SalesDate
-Product
-MonthlyPayment
-Interest
Ich will über die Abfrage jetzt folgende Felder in der Abfrage-Tabelle stehen haben:
-CustomerID
-ContractID
-MonthlyPayment
-Interest
Und dabei nur die drin stehen haben, die jeweils in dem gegebenen Intervall liegen.
Erstelle ich jetzt eine neue Abfrage wie eben beschrieben, dann komme ich zu dem Text:
SELECT *FROM tblKIVACustomer
Where
[KIVACustomer]![SalesDate] >= DateSerial(YEAR(DATE() - 3, MONTH (DATE())-1,1)
AND
[KIVACustomer]![SalesDate] < DateSerial(YEAR(DATE(), MONTH(DATE()),-1)
Aber dann gibt er mir Fehlermeldung über fehlende Operatoren aus. ?
Ich habe mal meinen Stand soweit angehängt. In meiner Abfrage stimmt soweit alles bei dem Kriterium bis auf das Startdatum. Zu Vereinfachungszwecken hatte ich das jetzt mal auf Datum von heute minus 3 Jahre gesetzt, aber es fehlt noch der eine Monat, den ich auch noch abziehen muss? Gibt es dafür keine einfache Lösung?
Mein Kriterium sieht soweit so aus:
Jahr([KIVACustomer]![SalesDate])>=Jahr(Datum())-3 Und Jahr([KIVACustomer]![SalesDate])*12+DatTeil("m";[KIVACustomer]![SalesDate])<=Jahr(Datum())*12+DatTeil("m";Datum())-1
Ansonsten wäre es super lieb, wenn ich das mit der Abfrage mit dem SQL-Code nochmal etwas genauer erklärt bekomme... da bin ich nicht wirklich fit drinnen, wie ich da vorgehen muss vom Erstellen der Abfrage aus...
Sorry für die dummen Fragen... :(
Hi,
da fehlt eine Klammer und ein Leerzeichen nach dem Stern:
SELECT * FROM tblKIVACustomer
Where
[KIVACustomer]![SalesDate] >= DateSerial(YEAR(DATE() - 3, MONTH (DATE())-1,1)
AND
[KIVACustomer]![SalesDate] < DateSerial(YEAR(DATE()[size=14pt][color=red])[/color][/size], MONTH(DATE()),-1)
Hallo,
ausserdem sollte schon genau umgesetzt werden...
Beim Between-Beispiel ist der Letzte der Vormonats zu berechnen,
bei den <= and > - Vergleichen ist der Erste des akt. Monats zu benutzen und nicht der Vorletzte des Vormonats:
SELECT * FROM tblKIVACustomer
Where
[KIVACustomer]![SalesDate] >= DateSerial(YEAR(DATE() - 3, MONTH (DATE())-1,1)
AND
[KIVACustomer]![SalesDate] < DateSerial(YEAR(DATE()), MONTH(DATE()),1)
Zitat von: DF6GL am Februar 25, 2016, 14:36:22
Hallo,
ausserdem sollte schon genau umgesetzt werden...
Beim Between-Beispiel ist der Letzte der Vormonats zu berechnen,
bei den <= and > - Vergleichen ist der Erste des akt. Monats zu benutzen und nicht der Vorletzte des Vormonats:
SELECT * FROM tblKIVACustomer
Where
[KIVACustomer]![SalesDate] >= DateSerial(YEAR(DATE() - 3, MONTH (DATE())-1,1)
AND
[KIVACustomer]![SalesDate] < DateSerial(YEAR(DATE()), MONTH(DATE()),1)
Hi...
ich bin nun auf "Erstellen" gegangen, "Abfrageentwurf" und habe dann keine Tabellen ausgewählt, sondern bin mit Rechtsklick unter "Abfrage1" auf SQL-Code gegangen und habe dann deinen Code eingefügt.
Er sagt mir immer noch:
"Fehlendes Element, ) oder ] im Abfrageausdruck..."
In meinen Augen fehlt in der ersten <=-Zeile ein Komma, aber wo kommt es denn hin?
Oder mach ich noch etwas ganz anderes falsch?
Hallo,
es fehlt eine Klammer:
[KIVACustomer]![SalesDate] >= DateSerial(YEAR(DATE()) - 3, MONTH (DATE())-1,1)
Es geht immer noch nicht...aber wenigstens ist die Fehlermeldung eine Andere.
Aus irgendeinen Grund meint er, die Tabelle nicht zu finden...
Ich habe mal zwei Screenshots angehängt. In meinen Augen ist alles richtig geschrieben!
Ich kann nicht sehen,wo der Fehler sein soll...:(
Hallo,
ja, wir gucken auch nicht genau hin.... ;)
SELECT * FROM tblKIVACustomer
Where
[KIVACustomer].[SalesDate] >= DateSerial(YEAR(DATE() - 3, MONTH (DATE())-1,1)
AND
[KIVACustomer].[SalesDate] < DateSerial(YEAR(DATE()), MONTH(DATE()),1)
oder gleich weglassen
SELECT * FROM tblKIVACustomer
Where
SalesDate >= DateSerial(YEAR(DATE() - 3, MONTH (DATE())-1,1)
AND
SalesDate < DateSerial(YEAR(DATE()), MONTH(DATE()),1)
Sorry, aber ich muss weiter nerven.
Er sagt bei den beiden Versionen, dass er die Tabelle nicht finden kann. Ich habe sie jetzt nochmal umbenannt in KIVAC und auch das funktioniert nicht. Siehe Screenshot.
Gibt es eventuell eine Eigenschaft, die verhindert, dass ich auf die Tabelle zugreifen kann?
Sorry für das lästige Fragen...
Hi,
die Tabelle heißt nun "KIVAC" bei dir und nicht "tblKIVAC".
Zitat von: MaggieMay am Februar 26, 2016, 09:47:45
Hi,
die Tabelle heißt nun "KIVAC" bei dir und nicht "tblKIVAC".
::)
Oh man...
Es tut mir leid.
Vielen Dank für die fleißige Hilfe!!!