Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Abfrage aus zwei Tabellen mit Berechungen und Gruppierungen

Begonnen von mauerhik, Februar 27, 2023, 13:19:50

⏪ vorheriges - nächstes ⏩

mauerhik

Schönen Guten Tag zusammen,

ich arbeite daran ein "Lagersystem" mit Access zu erstellen.

Jedes Betriebsmittel (z.B. eine Flasche Wasser 1L) wird in einer Tabelle [Material Check In] registriert.
Anhand von Check-In Datum + Uhrzeit wird ein 14-stelliger Barcode generiert, der z.B. auf die Flasche draufgeklebt wird. Wird etwas von der Flasche verwendet, kann der Barcode eingescannt werden und in einer Tabelle [Material Check Out] wird der Barcode und die entnommene Menge dokumentiert.

Beziehung: [Material Check In].[Barcode] 1:n [Material Check Out].[Barcode]
In der Tabelle [Material Check out] ist unter dem Feld [Barcode] eine Nachschlageassistent-Beziehung zu dem Barcode der Tabelle [Material Check In] hergestellt.

Beispiel:
Tabelle: [Material Check In]
[Produkt]: Wasser         [Menge]:   1L [Barcode]: 1 --> wird generiert aus Datum/Uhrzeit
[Produkt]: Wasser         [Menge]:   1L [Barcode]: 2
[Produkt]: Sonnenblumenöl [Menge]: 1,5L [Barcode]: 3

Tabelle: [Material Check Out]
//Über einen Barcodescanner soll der Barcode in das Barcodefeld eingefügt werden.
  Ein Barcode kann nur einmal eingecheckt, aber öfter ausgecheckt werden.
[Barcode]: 1 [Menge]: 0,2L
[Barcode]: 1 [Menge]: 0,2L
[Barcode]: 2 [Menge]: 0,8L
[Barcode]: 3 [Menge]:   1L

Der Lagerbestand soll auf 2 Arten wiedergegeben werden:
Abfrage1: Bestand pro Barcode:
[Produkt]: Wasser         [Barcode]: 1 [Menge]: 0,6L //1L-0,2L-0,2L
[Produkt]: Wasser         [Barcode]: 2 [Menge]: 0,2L //1L-0,8L
[Produkt]: Sonnenblumenöl [Barcode]: 3 [Menge]: 0,5L //1,5L-1L

Abfrage2: Bestand pro Produkt:
[Produkt]: Wasser         [Menge]: 0,8L //0,6L+0,2L
[Produkt]: Sonnenblumenöl [Menge]: 0,5L


Ich hab schon einiges Versucht, leider bin ich noch nicht zu dem Gewünschten Ergebnis gekommen.
Wie kann ich Abfrage1 in einer SQL Abfrage/Abfrageentwurf darstellen?

Falls noch Hintergrundinformationen fehlen, kann ich diese gerne noch nachliefern.

Vielen Dank und schöne Grüße
Heiko

MzKlMu

#1
Hallo,
ein Bild des Beziehungsfenster wäre hier zum Erkennen der Zusammenhänge besser geeignet.

Was aber schon mal nicht so gut ist, sind 2 Tabellen für Ein und Aus, das gehört in eine Tabelle mit einem Kennzeichen ob Ein oder Aus. In einer Abfrage werden Eingänge zu + und Ausgänge zu -, der Bestand ist dann einfach die Summe.
Du brauchst auch eine Tabelle für das eigentliche Material.

Ein Gruppierung mit dem Barcode scheint mir auch wenig sinnvoll, denn es gibt keine gleichen Barcodes die man gruppieren könnte. Datum und Uhrzeit ergibt jede Sekunde einen anderen Barcode.


Zeige also bitte erst mal ein Bild des Beziehungsfensters.
Gruß Klaus

ebs17

#2
Zitateine Nachschlageassistent-Beziehung
Diesen Unsinn gleich wieder in die Tonne, oder Du bleibst mit Deinen Problemen sehr einsam.

Tabelle [Material Check Out] sollte mindestens noch einen Zeitstempel enthalten, damit man mehrfache Entnahmen von mehrfachen Scannen der gleichen Entnahme unterscheiden kann.

Zitat[Menge]: 0,6L //1L-0,2L-0,2L
Da muss man dann Inhalte von verschiedenen Datensätzen zu einem String zusammensetzen:
Grundlagen - SQL ist leicht (22) - Zusammenfassen von Datensätzen
Für seine selbstgewählten Ansprüche muss man etwas tun. Erwarte kein großes Mitleid, wenn Du damit Probleme hast.
Mit freundlichem Glück Auf!

Eberhard

Beaker s.a.

Zitat[Produkt]: Wasser         [Barcode]: 1 [Menge]: 0,6L //1L-0,2L-0,2L
Ich weiss ja nicht, was das für eine eigenartige Lagerverwaltung das werden
soll, aber bei so einer Ausgabe würde ich als Sachbearbeiter verrückt werden  ;)
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

mauerhik

Zitat von: MzKlMu am Februar 27, 2023, 14:18:21Ein Gruppierung mit dem Barcode scheint mir auch wenig sinnvoll, denn es gibt keine gleichen Barcodes die man gruppieren könnte. Datum und Uhrzeit ergibt jede Sekunde einen anderen Barcode.


Eine Gruppierung nach Barcode hat meiner Meinung nach schon Sinn gemacht. In meinem Barcodegenerator kann ich einen Barcode mit 14 Stellen erstellen. Datum und Uhrzeit haben genau 14 Ziffern. TTMMJJJJHHMMSS (Tag, Monat, Jahr, Stunde, Minute, Sekunde)
Ich habe deswegen 2 Tabellen gewählt, da ich den Barcode über die Funktion "Teil" berechne. In der ersten Tabelle wird ein Produkt eingecheckt und mit dem Barcode versehen. Nachdem ich ein berechnetes Feld nicht abändern kann und da selbst einen Barcode eingeben kann, hatte ich die Idee eine zweite Tabelle für den Material Check out zu erstellen. In der Check out Tabelle wird kein Barcode generiert, sondern er wird durch das Scannen des Barcodes eingefügt. Dadurch kann ein Barcode nur einmal in der Check-In Tabelle erstellt werden und in der Check-Out Tabelle kann er mehrmals verwendet werden bis das Produkt - z.B. die Flasche - leer ist.

Aufgrund von Ihrem Vorschlag versuche Ich gerade das ganze in einer Tabelle aufzubauen.
Ich habe bereits eine Tabelle, in denen Produkte definiert werden. Diese kann ich über eine Nachschlageassistent-Beziehung in meiner [Material Check In ] abrufen.
Aktuell hänge ich an der Situation, dass für Check-In ein Barcode erstellt wird und für den Check-Out in der gleichen Spalte ein Barcode über den Scanner eingefügt werden soll.

Zitat von: ebs17 am Februar 27, 2023, 14:48:30
Zitateine Nachschlageassistent-Beziehung
Diesen Unsinn gleich wieder in die Tonne, oder Du bleibst mit Deinen Problemen sehr einsam.

Für seine selbstgewählten Ansprüche muss man etwas tun. Erwarte kein großes Mitleid, wenn Du damit Probleme hast.

Es tut mir leid, dass ich mich erst seit kurzem mit Access befasse, kein Programmierer bin und dementsprechend nur das verwenden kann, was mir in Youtube-Tutorials o.ä. erklärt wird. Dementsprechend hätte man den Kommentar auch anders formulieren können. Trotzdem Danke für das Antworten!


ebs17

Zitatnur das verwenden kann, was mir in Youtube-Tutorials o.ä. erklärt wird
Für die Qualität der Auswahl seiner Lehrmittel ist man selber verantwortlich. Es gibt auch Bücher und Tutorials, die mit einigen NÖTIGEN Grundlagen beginnen und dafür weniger auf einige Schnelleffekte setzen, die einem Neuling schnelle Erfolge vermitteln, die aber beim Wachsen von Ansprüchen Probleme bereiten.

ZitatAktuell hänge ich an der Situation, dass für Check-In ein Barcode erstellt wird und für den Check-Out in der gleichen Spalte ein Barcode über den Scanner eingefügt werden soll.
In meiner Vorstellung würde sich der Barcode mit der ID des Behältnisses beschäftigen, nicht mit einem Zeitstempel. Dann sollte es leicht sein, mehrere Zugriffe auf ein solches Behältnis in Zusammenhang zu bringen. 
Mit freundlichem Glück Auf!

Eberhard

MzKlMu

Hallo,
Zitatwas mir in Youtube-Tutorials o.ä. erklärt wird
Ich habe bisher nur wenige Youtube-Tutorials gesehen die was taugen. Und immer wieder werden auch die Nachschlageassis verwendet (auch in Büchern). Dabei ist diese Funktion gerade für Anfänger richtiger Unsinn und macht nur Probleme.

https://www.ms-office-forum.net/forum/showpost.php?p=2081877&postcount=2

Einen Zeitstempel als eindeutigen Schlüssel zu verwenden halte ich auch für problematisch. Ein Zeitstempel ist im Hintergrund eine Zahl des Typ Double und somit eine Fließkommazahl mit den dafür typischen Ungenauigkeiten.
Du solltest eine Tabelle haben für das Material mit einem eindeutigen Primärschlüssel der auch als Barcode dient.
Und dann noch eine Tabelle für Ein und Ausgang dann kannst Du mit einer einfachen Abfrage den Bestand bestimmen.
Die gewünschte Anzeige ([Menge]: 0,6L //1L-0,2L-0,2L) lässt sich dann über eine Abfrage realisieren. Wenn überhaupt noch erforderlich.
Gruß Klaus

Beaker s.a.

Hallo Heiko,
Zitat von Eberhard
ZitatIn meiner Vorstellung würde sich der Barcode mit der ID des Behältnisses beschäftigen,
und von Klaus
ZitatDu solltest eine Tabelle haben für das Material mit einem eindeutigen Primärschlüssel der auch als Barcode dient.
Die meisten Artikel heutzutage bringen ja einen Barcode mit (üblich EAN12 oder EAN8).
Warum verwendest du den nicht einfach?
Ist zwar als PK nur bedingt geeignet, da vom Typ String, aber das hindert einen ja nicht
daran als PK einen AutoWert zu verwenden und auf den Barcode einen zusätzl. eindeutigen
Index zu legen. Wenn du aber (ich vermute es stark) jede Flasche einzeln benötigst, würde
ich zum Barcode eine laufende Nr. vergeben, und die zusammen mit dem Code eindeutig
indizieren (Mehrfelder-Index). Das wäre dann sowas wie bei Zeitschriften, wo zum eindeutigen
Barcode für den Titel noch ein Code für die Ausgabe hinten dranhängt. *)

gruss ekkehard


*) Ich weiss jetzt nicht wie ein Scanner so einen "doppelten" Barcode zurück gibt, und kann
es in Ermangelung Scanner auch nicht testen. Vermutlich kommt der als ein kompletter String
zurück(Trennzeichen?), dann muss man den zum Finden der Flasche per Code trennen.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)