Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Letzte Werte suchen





Frage

Hallo, ich suche Hilfe zu folgender Problemstellung: In einer Tabelle sind Lieferungen von verschiedenen Artikeln erfaßt. Ich habe einen Bericht erstellt, wo ich die Gesamtmenge in einem Zeiraum je Produkt angezeigt bekomme und den Preis. Der Preis soll aber der in der Tat [u] [b]zuletzt bezahlte Preis [/u] [/b] sein. Mit der Option "letzter Wert" oder "erster Wert" wird mir ja nur der höchste oder der niedrigste Preis angezeigt. Welche Nebenabfrage muß ich erstellen, um mir in einem vorgebenem Zeitraum den zuerst , oder zuletzt erfaßten Wert zu ermitteln und in einem Bericht einbauen zu können? Schon jetzt vielen Dank für die Unterstützung

Antwort 1 von oliverV

Hallo,

in einer Gruppierungsabfrage sind "Letzter Wert" bzw. "Erster Wert" die richtigen Funktionen für dein Vorhaben.
Beide Funktionen beziehen sich auf die Sortierung in der Abfrage (bzw. ohne Sortierung, auf die Reihenfolge in der Tabelle).

Wenn es trotz der richtigen Sortierung nicht klappt, könntest du auch 2 Einzelabfragen erstellen (1 x Summierung der Mengen / 1 x Letzter Preis) und diese beiden Einzelabfragen dann als Datenherkunft für eine dritte Abfrage nutzt, mit der du die Ergebnisse zusammenführst.

Es lässt sich sicherlich auch noch etwas mit den Domänen-Funktionen basteln, aber das ist eigentlich nicht notwendig, denn das "richtige" Mittel ist die Gruppierungsabfrage.

Letzte Möglichkeit eine Funktion in VBA schreiben.

Gruß

Oliver

Antwort 2 von no idea

Hallo Oliver,

Danke für Deinen Tip.
Also ich möchte nach wie vor behaupten, daß mein Problem mit "letzter Wert" oder "erster Wert" nicht funktioniert.
Mach Dir eine Tabelle mit den Tagen des Januar. Füge noch die Spalte Artikel (vielleicht nur 3), Menge und Preis ein. An jedem Tag gibst Du einen Artikel mit unterschiedlicher Menge und Preis ein.
Am Ende möchtest Du einen Bericht, wo die Summe der 3 Artikel zusammen mit den zuletzt eingegebenm Preis angzeigt wird. Mit den o. g. Befehlen wird immer nur der höchste und der niedrigste Preis angegeben. Ich suche aber den zuletzt eingetragenen Preis je Artikel für den Zeitraum.
Ich denke, ich muß in der Tat eine zweite Abfrage machen. Da stellt sich dann mir nur wieder die Frage, wie bekomme ich nur den LETZTEN Wert (Preis) gegriffen.

Bin für jeden Rat dankbar.

Gruß

Andreas

Antwort 3 von oliverV

Hallo Andreas,

ich hab´s mal nachgebaut; dabei habe ich bewusst "unsortierte" Eingaben gemacht, sodass Datumswerte nicht in chronologischer Reihenfolge in der Tabelle vorhanden sind.

Gestern habe ich geschrieben:
Zitat:
Beide Funktionen beziehen sich auf die Sortierung in der Abfrage (bzw. ohne Sortierung, auf die Reihenfolge in der Tabelle).

Nicht berücksichtigt habe ich dabei, das das Datum kein Bestandteil der Abfrage ist, also man auch nicht danach sortieren kann; bedeutet, das immer der letzte Tabelleneintrag eines Artikels mit der LetzerWert-Funktion angesprochen wird.

Mein Lösungsansatz sind folgende 3 Abfragen:
Die Tabelle heißt tbl_Wareneingänge, mit den Feldern Datum, Artikel, Menge und Preis.
Die Einschränkung der Daten auf einen Monat habe ich mit einer Parameterabfrage simuliert, im Echtbetrieb solltest du diese dann durch einen Formularbezug ersetzten.

qry_WE_letztes_Eingangsdatum
SELECT tbl_Wareneingänge.Artikel, Max(tbl_Wareneingänge.Datum) AS [Letztes Eingangsdatum]
FROM tbl_Wareneingänge
WHERE (((Format([Datum],"mm"))=[Monatsparameter]))
GROUP BY tbl_Wareneingänge.Artikel;

qry_WE_letzter_Preis
SELECT tbl_Wareneingänge.Artikel, tbl_Wareneingänge.Datum, tbl_Wareneingänge.Preis AS [Letzter Preis]
FROM tbl_Wareneingänge INNER JOIN qry_WE_letztes_Eingangsdatum ON tbl_Wareneingänge.Artikel = qry_WE_letztes_Eingangsdatum.Artikel
WHERE (((tbl_Wareneingänge.Datum)=[Letztes Eingangsdatum]))
ORDER BY tbl_Wareneingänge.Artikel;

qry_WE_Monatswerte
SELECT tbl_Wareneingänge.Artikel, Sum(tbl_Wareneingänge.Menge) AS [Summe von Menge], qry_WE_letzter_Preis.[Letzter Preis]
FROM tbl_Wareneingänge INNER JOIN qry_WE_letzter_Preis ON tbl_Wareneingänge.Artikel = qry_WE_letzter_Preis.Artikel
WHERE (((Format([tbl_Wareneingänge].[Datum],"mm"))=[Monatsparameter]))
GROUP BY tbl_Wareneingänge.Artikel, qry_WE_letzter_Preis.[Letzter Preis];

Kopiere den jeweiligen String einfach in eine neue leere Abfrage in die SQL-Ansicht und speichere die Abfrage unter dem angegebenen Namen.

Sollte dir das gewünschte Ergebnis bringen.

Gruß

Oliver

Antwort 4 von no idea

Hallo Oliver,

das war´s. Vielen Dank.

Bis zum nächsten Mal

Gruß

Andreas

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: