Access-o-Mania

Access-Forum (Deutsch/German) => Bericht => Thema gestartet von: Aloster am November 30, 2016, 19:29:45

Titel: DomWert Betrag auslesen wo Jahr([Datum]) = [Jahr] und ID = max
Beitrag von: Aloster am November 30, 2016, 19:29:45
In einem Bericht möchte ich in einem Feld "Hoechstbetrag" im Seitenkopf den Betrag aus einer mit dem Bericht verknüpften Abfrage "Betragsliste" denjenigen Betrag anzeigen lassen, wo Jahr([Datum]) = dem einzugebenden Parameter [Jahr] und ID = max.

Die Abfrage "Betragsliste" hat die Spalten "ID", "Betrag" und "Datum", z.B.:

ID  Betrag  Datum        Jahr([Datum])
1         12   1.01.2015             2015
2           8   2.03.2015             2015
3         13   4.05.2015             2015
4           3   4.05.2016             2016
5         16   4.05.2016             2016

Gebe ich als Parameter z.B. "2015" ein, dann soll der Betrag 13 (bei der ID =3) ausgegeben  werden, da die ID= 3 die maximale ID im Jahr 2015 ist. Wie geht das?
Titel: Re: DomWert Betrag auslesen wo Jahr([Datum]) = [Jahr] und ID = max
Beitrag von: MaggieMay am Dezember 01, 2016, 00:26:55
Hallo Aloster,

wo bzw. wie soll die Parametereingabe stattfinden?
Ist sie bereits in der Abfrage enthalten?
Oder wo können diese Daten eingegeben werden?
Titel: Re: DomWert Betrag auslesen wo Jahr([Datum]) = [Jahr] und ID = max
Beitrag von: Aloster am Dezember 01, 2016, 12:01:10
Ja, die Parameterabfrage ist bereits in der Abfrage enthalten.
Titel: Re: DomWert Betrag auslesen wo Jahr([Datum]) = [Jahr] und ID = max
Beitrag von: MaggieMay am März 12, 2017, 19:55:09
Auch wenn's schon ein bißchen länger her ist, eine mögliche Lösung wäre die folgende:

=DLookUp("Betrag";"Betragsliste";"ID=" & DMax("ID";"Betragsliste"))

einzutragen als Steuerelementinhalt des Textfeldes im Bericht.

Um zu vermeiden, dass die Parameterabfrage nach dem gesuchten Jahr x-mal gestellt wird, sollte der Parameter in der Abfrage sich bspw. auf ein Formularfeld beziehen oder per Funktionsaufruf (s. Access-FAQ 3.15 (http://www.donkarl.com?FAQ3.15)) hinzugeholt werden.