Kriterium in Abfrage per SQL

Ratoncito

Benutzer
Beiträge
16
Hallo,

in einer Abfrage benötige ich in einer Spalte als Kriterium ein Datum. Von Hand eingeben funktioniert.

qryWertAktuell:
SELECT qryRepWert.Num, qryRepWert.ID, qryRepWert.Bezeichnung, tblKurs.DatumKurs, tblKurs.Kurs
FROM qryDatumMax INNER JOIN (qryRepWert INNER JOIN tblKurs ON qryRepWert.ID = tblKurs.IdfWePa) ON qryDatumMax.IdfWePa = tblKurs.IdfWePa
GROUP BY qryRepWert.Num, qryRepWert.ID, qryRepWert.Bezeichnung, tblKurs.DatumKurs, tblKurs.Kurs
HAVING (((tblKurs.DatumKurs)=#1/7/2022#))
ORDER BY qryRepWert.Num;

Nun möchte ich das benötigte Datum automatisch dort eintragen. Dazu habe ich folgende Abfrage

qryDatumMax:
SELECT Max(tblKurs.DatumKurs) AS MaxvonDatumKurs, tblKurs.IdfWePa
FROM tblKurs
GROUP BY tblKurs.IdfWePa;

meine Versuche, das Datum aus dieser Abfrage in die Zeile
HAVING (((tblKurs.DatumKurs)=#1/7/2022#))
zu integrieren sind leider nicht von Erfolg gekrönt.

Hat jemand eine Lösung?

Für Eure Hilfe vielen Dank - Wolfgang
 
Werbung:
reverse die Tabellen zu erraten hab ich jetzt grad nicht so die Lust, aber du gruppierst ohne nach etwas zu aggregieren und verwendest HAVING wo eigentlich wohl eher ein WHERE sein sollte. Das sieht mehr oder weniger vom Ansatz her falsch aus. Aber villeicht macht man so auch in Access, ich weiß es nicht, ich nutze es nicht...
 
Hallo,

vielen Dank für die schnelle Antwort.

Puh, SQL ist nicht so mein Ding. Die Abfrage funktioniert. Wenn ich das Datum als Kriterium von Hand eingebe erhalte ich das gewünschte Ergebnis.

Die Abfrage dient als Grundlage für einen Bericht. Beim Öffnen würde ich gerne das Datum aus der Abfrage "qryDatumMax" automatisch als Filter eingeben.
Access ist eh bei Datum ein wenig speziell.
Wenn es eine andere Möglichkeit dieses Datum beim Öffnen des Berichts als Filter an die Abfrage zu übergeben...
Wäre auch eine Lösung.

Wenn man statt HAVING besser WHERE verwenden müsste, wie würde dann die WHERE-Zeile aussehen?

LG - Wolfgang
 
Wenn man statt HAVING besser WHERE verwenden müsste, wie würde dann die WHERE-Zeile aussehen?

Kurzdemo:

Code:
edb=# create table ratoncito(a int, b int, c int);
CREATE TABLE
--
-- du machst es so:
--
edb=*# select * from ratoncito group by a,b,c having (a=5) order by a,b,c;
 a | b | c 
---+---+---
(0 rows)
--
-- besser aber wäre:
--
edb=*# select * from ratoncito where a=5 order by a,b,c;
 a | b | c 
---+---+---
(0 rows)

edb=*#

Den Rest kann ich nicht nachvollziehen, zu wenig Info.
 
Ich glaube, bei Access würdest Du einen Parameter in die Abfrage setzen, statt des Datums.
Das Symbol ist vielleicht das Fragezeichen, bin ich nicht sicher.
Ein solches Fragezeichen wird dann sogar automatisch abgefragt, falls es nicht im Code durch einen Wert ersetzt wird.

Also entweder mal für Programm Code im VBA Forum fragen
oder
für interaktive Nutzung nach Access Query Parameter suchen

Und:
@akretschmer hat Recht. Du brauchst kein GROUP, demnach auch keine HAVING. Statt HAVING dann WHERE
 
Hallo,

sorry, aber mit dem Code bin ich total überfordert, da verstehe ich nur Bahnhof.
Ich wurschtel mich bei Access eh nur mühsam durch.

Eventuell bekomme ich die WHERE Zeile noch hin, aber Access hat bei Datumformaten immer kleine Überraschungen parat.

Nun gut, wurschtel ich mal weiter.

Vielen Dank und noch ein schönes Wochenende - Wolfgang
 
Werbung:
Zurück
Oben