Hallo habe heute von unserem Steuerberater die Aufgabe bekommen eine Inventur zum 30-09 zu machen. Ein Lösungsansatz wäre aus dem Warenbewegungsbuch den jeweils letzten Satz per Artikel vor dem 30-09 rauszufinden.
Hat da jemand eine Idee ?
Hallo,
worin liegt dein Problem? Und ohne vernünftige Beschreibung des Datenmodells und der Tabellen wird ohnehin kaum jemand helfen können.
Habe derzeit eine Tabelle mit jetzt nur noch 5 Spalten.
Artikelnummer/Datum/Lager Nr/ Bestand
ich benötige die jeweils letzte Buchung jeden Artikels per Lager
Vielen Dank Rainer
Zitat
Habe derzeit eine Tabelle mit jetzt nur noch 5 Spalten.
Artikelnummer/Datum/Lager Nr/ Bestand
Access kennt keine Spalten, nur Felder - und deren sind es nach deiner Auflistung 4. Hast du was unterschlagen? Datum ist als Bezeichner ungeeignet und sollte schleunigst umbenannt werden, zb in Bewegungsdatum. Leerzeichen wie in Lager Nr sind ebenfalls zu vermeiden - verwende hier Lager_Nr.
Nun könnte es doch aber sein, dass ein Artikel mit gleichem Lager am gleichen Tag mehrere Buchungen hat - wie willst du da den letzten finden? Gibt es eine ID an der man das fest machen kann?
Hallo Jürgen
Uhrzeit mit folgender Formatierung:16.11.2015 09:14:30
Die anderen Felder sind natürlich mit _ versehen. entschuldige
SELECT
E.*
FROM
EineTabelle AS E
INNER JOIN
(
SELECT
Artikelnummer,
MAX(Datum) AS MaxDatum
FROM
EineTabelle
WHERE
Datum < #2015-10-01#
) AS Q
ON E.Artikelnummer = Q.Artikelnummer
AND
E.Datum = Q.MaxDatum
Moin,
also das Statement von Eberhard hat bei mir im Test nicht funktioniert ( In der Abfrage ist der angegebene Ausdruck "Artikelnummer" nicht als Bestandteil der Aggregatfunktion enthalten ).
Funktionieren würde
SELECT
E.*
FROM
EineTabelle AS E
INNER JOIN
(SELECT Artikelnummer, Max(Datum) AS MaxDatum
FROM EineTabelle
GROUP BY Artikelnummer, [Datum]
HAVING (((EineTabelle.[Datum])<#10/1/2015#))
) AS Q
ON E.Artikelnummer = Q.Artikelnummer
AND
E.Datum = Q.MaxDatum
wobei noch die Lager_Nr berücksichtigt werden sollte. Da weiss ich im Moment aber auch nicht das richtige Statement.
Hallo,
das Feld halt noch mit aufnehmen..
SELECT
E.*
FROM
EineTabelle AS E
INNER JOIN
(SELECT Artikelnummer, Lager_Nr, Max(Datum) AS MaxDatum
FROM EineTabelle
Where [Datum]<#10/1/2015#
GROUP BY Artikelnummer, Lager_Nr ,[Datum]
) AS Q
ON E.Artikelnummer = Q.Artikelnummer
AND
E.Datum = Q.MaxDatum
And
E.Lager_Nr = Q.Lager_Nr
wobei ich jetzt nicht nachvollziehen kann, warum nach Datum gruppiert werden soll
tja, der Franz hat's verraten ;) ... mal sehen ob sich der TE nochmal meldet ...
Melden.... der ist am testen wie verrückt.
Also ich bin ja ein wenig unbedarft was Access angeht und versuche gerade den SQL Datensatz in einer Abfrage umzusetzen... nicht so ganz einfach, verfluche mich schon das ich nicht in der Anfrage die korrekten Bezeichner eingesetzt habe. Ist aber immer wieder faszinierend was alles mit Access machbar ist.
Vielen Dank Euch beiden.
Rainer
Scheint mir jetzt als wenn er einen Datensatz aus jedem Buchungstag erzeugt.
hier die Abfrage:
SELECT E.*
FROM abfrage2 AS E INNER JOIN (SELECT Artikelnummer, Lg_Nr_BUCHUNG, Max(WBW_DATUM) AS MaxDatum FROM abfrage2 WHERE [WBW_Datum]<#10/1/2015# GROUP BY Artikelnummer, Lg_Nr_BUCHUNG, [WBW_Datum]) AS Q ON (E.Artikelnummer = Q.Artikelnummer) AND (E.WBW_Datum = Q.MaxDatum) AND (E.Lg_Nr_BUCHUNG = Q.Lg_Nr_BUCHUNG);
Hallo,
hatte ich "[WBW_Datum]" ("[Datum]") nicht ausgestrichen?
jetzt machst du mich neugierig
Wie kann man das denn Programmieren ? gibt es da eine Tastenkombination?
Hallo,
das ist kein "Programm"(-Code) , sondern ein SQL-Statement, das heißt, es ist eine Abfrage.
Die SQL-Statements einer Abfrage findest Du im Abfrage-Entwurf unter SQL-Ansicht.
Allerdings bedingt das Zusammenstellen der o. g. Abfrage etwas tiefere SQL-Kenntnisse und kann auch nicht direkt im Abfrage-Entwurf zusammengeklickt werden, allenfalls über mehrere Zwischenschritte.
Danke an Franz für die entgültige Korrektur meines Ansatzes. Ich war da etwas zu flüchtig beim Schreiben, und ohne Test (womit auch?) fallen da ein Fehler oder eine Unterlassung weniger auf.
Zitatgibt es da eine Tastenkombination?
DIE Tastenkombination, die Wissen, Erfahrung und Denken ersetzt, suchen vermutlich sehr viele - bisher vergeblich.
Bis dahin muss man es machen wie üblich: Lernen ist einfach Arbeit.
Beginnen sollte man damit, zu verstehen, worum es sich handelt:
Grundlagen - SQL ist leicht (0) - Vorspiel (http://www.ms-office-forum.net/forum/showthread.php?t=317692)