Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: raiwo am November 16, 2015, 17:32:45

Titel: den jeweils letzen Datensatz per Artikel
Beitrag von: raiwo am November 16, 2015, 17:32:45
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 ?
Titel: Re: den jeweils letzen Datensatz per Artikel
Beitrag von: el_gomero am November 16, 2015, 18:25:16
Hallo,

worin liegt dein Problem? Und ohne vernünftige Beschreibung des Datenmodells und der Tabellen wird ohnehin kaum jemand helfen können.
Titel: Re: den jeweils letzen Datensatz per Artikel
Beitrag von: raiwo am November 16, 2015, 18:31:47
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
Titel: Re: den jeweils letzen Datensatz per Artikel
Beitrag von: el_gomero am November 16, 2015, 18:42:31
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?
Titel: Re: den jeweils letzen Datensatz per Artikel
Beitrag von: raiwo am November 16, 2015, 18:53:19
Hallo Jürgen

Uhrzeit   mit folgender Formatierung:16.11.2015 09:14:30

Die anderen Felder sind natürlich mit _ versehen. entschuldige
Titel: Re: den jeweils letzen Datensatz per Artikel
Beitrag von: ebs17 am November 16, 2015, 20:04:43
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
Titel: Re: den jeweils letzen Datensatz per Artikel
Beitrag von: el_gomero am November 17, 2015, 10:50:48
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.
Titel: Re: den jeweils letzen Datensatz per Artikel
Beitrag von: DF6GL am November 17, 2015, 13:05:37
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
Titel: Re: den jeweils letzen Datensatz per Artikel
Beitrag von: el_gomero am November 17, 2015, 15:06:56
tja, der Franz hat's verraten ;) ... mal sehen ob sich der TE nochmal meldet ...
Titel: Re: den jeweils letzen Datensatz per Artikel
Beitrag von: raiwo am November 17, 2015, 17:31:05
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
Titel: Re: den jeweils letzen Datensatz per Artikel
Beitrag von: raiwo am November 17, 2015, 17:57:35
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);
Titel: Re: den jeweils letzen Datensatz per Artikel
Beitrag von: DF6GL am November 17, 2015, 18:07:15
Hallo,

hatte ich "[WBW_Datum]"   ("[Datum]")  nicht ausgestrichen?
Titel: Re: den jeweils letzen Datensatz per Artikel
Beitrag von: raiwo am November 17, 2015, 20:08:27
jetzt machst du mich neugierig
Titel: Re: den jeweils letzen Datensatz per Artikel
Beitrag von: raiwo am November 18, 2015, 08:57:52
Wie kann man das denn Programmieren ? gibt es da eine Tastenkombination?
Titel: Re: den jeweils letzen Datensatz per Artikel
Beitrag von: DF6GL am November 18, 2015, 09:51:35
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.
Titel: Re: den jeweils letzen Datensatz per Artikel
Beitrag von: ebs17 am November 18, 2015, 10:40:04
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)