Neu Datum des letzten Wareneingangs anzeigen lassen

Micmac

Gut bekanntes Mitglied
12. Februar 2016
108
5
Hallo,
gibt es eine einfache Möglichkeit die letzten z.B. 5 Daten des Wareneingangs eines Artikels anzeigen zu lassen. Wir wollen auf einen Blick sehen können wann es einen Eingang gab. Also die Artikelhistorie auf einen Blick.
Leider sind wir alle hier totale SQL-Nieten, daher die Frage an Euch. Es sollte doch kein Problem sein, oder?

Vielen Dank schon mal
 

ChristianDZ

Mitglied
10. Februar 2020
33
18
SELECT TOP (5)
fAnzahl as Stückzahl,
dGebucht as Buchungsdatum
FROM
tArtikelHistory
WHERE kArtikel = @key
ORDER BY dGebucht DESC

Hi Micmac, das dürfte dir helfen. Das gibt dir auch die Buchungsmenge mit an. Wenn du "TOP (5)" entfernst, kannst du dir auch alle anzeigen lassen, oder eben abhängig von der Zahl beschränken. Brauchst du noch mehr Daten?
 

Micmac

Gut bekanntes Mitglied
12. Februar 2016
108
5
Hallo ChristianDZ,
erst einmal tausend Dank für die Hilfe, das ist schon eine riesen Erleichterung für unser "Problem".
Kann man es auch so anzeigen lassen dass nur die EINGÄNGE gelistet werden, sprich nur Plusbuchungen? Das wäre noch mal eine Erleichterung extra.
 

ChristianDZ

Mitglied
10. Februar 2020
33
18
Klar ;)

SELECT TOP (5)
fAnzahl as Stückzahl,
dGebucht as Buchungsdatum
FROM
tArtikelHistory
WHERE kArtikel = @key AND fAnzahl >0
ORDER BY dGebucht DESC
 
  • Gefällt mir
Reaktionen: Micmac

Micmac

Gut bekanntes Mitglied
12. Februar 2016
108
5
Perfekt. Das ist eine sehr große Hilfe. Anstelle jeden Artikel aufzumachen, auf die Historie zu klicken, diese dann zu sortieren und am Ende alles wieder zu schließen hat man nun alles sofort auf einen Blick. Eine Arbeitserleichterung ohne Ende. Das spart sehr viel Zeit und geklicke. :thumbsup:

Vielen vielen Dank
 

Micmac

Gut bekanntes Mitglied
12. Februar 2016
108
5
Im Gebrauch fällt noch eine Kleinigkeit auf:
Es werden auch Lagerumbuchungen und Retouren angezeigt. Die sind ja keine Wareneingänge im engeren Sinn.
Kann man daher entweder wirklich NUR die Wareneingänge und keine Lagerumbuchungen, Retouren, Korrekturbuchungen usw. anzeigen lassen
ODER die Buchungsart als dritte Spalte? Das wäre dann "noch perfekter" :)

Und eine kleine Schönheitskorrektur hätte ich noch. Die Nachkommastellen sind natürlich nutzlos. Ich habe zwar in einem anderen Beitrag die Zeile gefunden, weiß aber nicht genau was ich ändern muss und wo diese dann eingefügt werden muss:

ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2)

Kann man die Reihenfolge der Spalten festlegen, d.h. welche Spalte an erster Stelle steht? Wenn man sie ändert, bleibt sie nur solange bis man einen neuen Artikel aufruft. Dann springt sie wieder auf Anfangseinstellung zurück. Das ist nicht weiter schlimm, nur aus Interesse.

Vielen Dank für die großartige Hilfe
 
Zuletzt bearbeitet:

ChristianDZ

Mitglied
10. Februar 2020
33
18
:D gleich wird es ein Großprojekt

Ja das geht, vorausgesetzt die IDs der Buchungsarten haben sich in den Versionen nicht geändert. Sollte folgende Lösung nicht funktionieren schreib mir mal, dann guck ich mir das gerne mal an.

SELECT TOP (5)
CAST(tArtikelHistory.fAnzahl AS INT) as Stückzahl,
tArtikelHistory.dGebucht as Buchungsdatum,
tBuchungsArt.cName as Buchungsart
FROM tArtikelHistory
LEFT JOIN tBuchungsArt
ON tArtikelHistory.kBuchungsart = tBuchungsArt.kBuchungsart
WHERE kArtikel = @key AND fAnzahl >0 AND tArtikelHistory.kBuchungsArt = 10
ORDER BY tArtikelHistory.dGebucht DESC


Die Zeile macht leider nicht das was du suchst, aber es gibt die Variante mit CAST, so wie ich sie verwendet habe.

Zur Variation der Reihenfolge:

Die Abfrage gibt die Reihenfolge an:

CAST(tArtikelHistory.fAnzahl AS INT) as Stückzahl,
tArtikelHistory.dGebucht as Buchungsdatum,
tBuchungsArt.cName as Buchungsart

Hier kommt also erst Stückzahl, Buchungsdatum, Buchungsart. Du kannst die Reihenfolge selbst anpassen, achte aber auf die Kommas. Nach dem Letzten Wert folgt KEIN KOMMA. Zwischen den Werten muss aber eins stehen....ist ja auch eine Aufzählung an Werten die du haben möchtest.

Du kannst die Spaltenbezeichnungen auch ändern. Dieses "as" gibt an, wie die Spalte bezeichnet werden soll in der Ausgabe. Also kannst du auch "as Stk" machen, wenn du magst.

Wenn du doch wieder alle Buchungen sehen willst, dann entferne in der vorletzten Zeile "AND tArtikelHistory.kBuchungsArt = 10"
 

Micmac

Gut bekanntes Mitglied
12. Februar 2016
108
5
OK OK - ich höre jetzt auf. Kein Großprojekt :)
Jetzt haben wir wirklich alles auf einen Blick was wir brauchen.
Danke für die Erklärung, das hilft nochmal sehr um alles anzupassen und zu verstehen. Die Arbeitserleichterung ist jetzt wirklich enorm für uns - nochmal tausend Dank
 

holzpuppe

Sehr aktives Mitglied
14. Oktober 2011
1.382
135
Leipzig
OK OK - ich höre jetzt auf. Kein Großprojekt :)
Jetzt haben wir wirklich alles auf einen Blick was wir brauchen.
Danke für die Erklärung, das hilft nochmal sehr um alles anzupassen und zu verstehen. Die Arbeitserleichterung ist jetzt wirklich enorm für uns - nochmal tausend Dank
Mach ruhig weiter. Ich lese mit. :p
Hab das als meine erste eigene Listenansicht übernommen!:thumbsup:
Supi. Danke.
 

Micmac

Gut bekanntes Mitglied
12. Februar 2016
108
5
Nur noch Kosmetik.
Wo wird die Spaltenbreite festgelegt? Wenn man diese verändert bleibt sie nur solange bis man einen neuen Artikel aufruft. Dann springt Sie wieder in den Urzustand. Das ist nicht weiter schlimm, nur aus Interesse...

Viele Grüße
 

ChristianDZ

Mitglied
10. Februar 2020
33
18
Welche Wawi Version habt ihr denn? Ich glaube gelesen zu haben, dass es ab Wawi 1.5.11 Standard ist, dass sich die Einstellung der Spaltenanordnung und Spaltenbreite speichert.
 

Micmac

Gut bekanntes Mitglied
12. Februar 2016
108
5
Wawi Version 1.5.13.1
Es scheint sich dann zu verstellen wenn man einen Artikel angeklickt hat der keinen Eintrag hat, sprich keinen Wareneingang und somit nichts angezeigt wird. Wird danach ein anderer Artikel angeklickt der Daten hat, ist zumindest die "Stückzahl" Spalte wieder auf Urzustand.
Ich hatte 10 Artikel gefiltert und sie einzeln durchgeklickt. Solange ein Eintrag da ist, d.h. ein Wareneingang angezeigt wird, bleibt die Spaltenbreite.
 

ChristianDZ

Mitglied
10. Februar 2020
33
18
Schau mal ob das passt, ich bin mir nicht sicher, ob der hinterlegte EK dort dem tatsächlichen EK entspricht:

SELECT TOP (5)

CAST(tArtikelHistory.fAnzahl AS INT) as Stückzahl,

tArtikelHistory.fEKNetto as 'EK Netto',

tArtikelHistory.dGebucht as Buchungsdatum,

tBuchungsArt.cName as Buchungsart

FROM tArtikelHistory

LEFT JOIN tBuchungsArt

ON tArtikelHistory.kBuchungsart = tBuchungsArt.kBuchungsart

WHERE kArtikel = @Key AND fAnzahl >0 AND tArtikelHistory.kBuchungsArt = 10

ORDER BY dGebucht DESC
 
  • Gefällt mir
Reaktionen: holzpuppe

holzpuppe

Sehr aktives Mitglied
14. Oktober 2011
1.382
135
Leipzig
Supi, das klappt. Es gibt mir auch unterschiedliche EK-Preise aus! Nur noch ein kleines Manköchen. Die EK's haben zuviele Stellen. 3 oder 4 Stellen nach dem Komma reichen.
Das muss ja dann in der Art ja sein:
CAST(tArtikelHistory.fEKNetto AS INT) as 'EK Netto',
Aber das INT ist nicht richtig, bzw muss da noch was dazu. Ich bin zu doof dafür.:rolleyes:
 

ChristianDZ

Mitglied
10. Februar 2020
33
18
Supi, das klappt. Es gibt mir auch unterschiedliche EK-Preise aus! Nur noch ein kleines Manköchen. Die EK's haben zuviele Stellen. 3 oder 4 Stellen nach dem Komma reichen.
Das muss ja dann in der Art ja sein:
CAST(tArtikelHistory.fEKNetto AS INT) as 'EK Netto',
Aber das INT ist nicht richtig, bzw muss da noch was dazu. Ich bin zu doof dafür.:rolleyes:
Lass mir ein Like da :D

SELECT TOP (5)
tArtikelHistory.kArtikel as ArtikelID,
CAST(tArtikelHistory.fAnzahl AS INT) as Stückzahl,
CAST(tArtikelHistory.fEKNetto as NUMERIC(20,2)) as 'EK Netto',

tArtikelHistory.dGebucht as Buchungsdatum,

tBuchungsArt.cName as Buchungsart

FROM tArtikelHistory

LEFT JOIN tBuchungsArt

ON tArtikelHistory.kBuchungsart = tBuchungsArt.kBuchungsart

WHERE kArtikel = @key AND fAnzahl >0 AND tArtikelHistory.kBuchungsArt = 10

ORDER BY dGebucht DESC



Für die Anzahl der Stellen nach dem Komme den zweiten Wert bei "NUMERIC(20,2)" ändern. Also NUMERIC(20,4) für 4 Stellen. Die erste Zahl "20" gibt an, wie viele Stellen der Wert insgesamt hat. Aber ich glaube mit 20 Stellen kommt ihr aus :D
 

express24

Aktives Mitglied
29. März 2018
14
1
Das klingt alles perfekt - könnte man denn den Lagerbestand aufführen, den man durch den Wareneingang dann hatte? Also 1000 Bestand, 100 kamen dazu, 1100 Lagerbestand????