Mai 16, 2021, 23:13:12

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Datensätze aus Abfragen zusammenfassen und berechnen

Begonnen von BobbyRyder, April 08, 2021, 13:19:56

⏪ vorheriges - nächstes ⏩

BobbyRyder

Hallöchen,

ich bin dabei eine Datenbank für einen Artikelbestand zu erstellen und stoße da an meine Grenzen ???

Grundlegend zu der Datenbank:
Es gibt eine Tabelle mit Eingängen und eine mit Ausgängen mit verschiedenen Artikeln, Mengen und Chargen.

ich habe folgendes Problem:
wenn ich einen Eingang von einem Artikel habe aber keinen Ausgang kann ich die Daten leider nicht zusammenfassen bzw berechnen lassen da er mir die Datensätze dann nicht darstellt wenn keine Ausgänge vorhanden sind. (Man kann das ganze austricksen indem man entsprechende Datensätze erzeugt, die als Entnahme 0 haben, aus meiner Sicht ist es aber nicht wirklich Sinn der Sache "0 Datensätze" zu erzeugen.)

Vielen Dank im Voraus für eure Antworten

BobbyRyder

DF6GL

Hallo,

das Konzept mit den beiden Tabellen ist falsch...


Eingänge als auch Ausgänge gehören in eine Tabelle  ("tblLagerbewegungen").

Dabei können
--Eingänge als positive Menge und Ausgänge als negative Menge erfasst werden

oder

-- Eingänge/Ausgänge mit einem zusätzlichen Ja/Nein-, bzw. Long-Feld (Werte: -1, +1)  unterscheidbar gemacht werden. (Eher nicht empfohlen, weil immer eine Berechnung stattfinden muss)



BobbyRyder

Hallo DF6GL,

Danke für die schnelle Antwort.

Ich bin leider nicht wirklich erfahren was den Umgang mit Datenbanken angeht.

Sollte machbar sein die Tabellen in einer zusammen zu fassen.

Ich hatte die Tabellen getrennt, weil beim Eingang mehr Informationen (Lieferant, Hersteller und Lieferzustand etc.) hinterlegt werden als beim Ausgang (lediglich Artikel, Charge, Datum und Menge).

Beim Ausgang kann nur schwer nachvollzogen werden, von welchem Hersteller oder Lieferant der Artikel geliefert wurde. Oder gibt es die Möglichkeit mit einem Kombinationsfeld den entsprechenden Eingang herauszusuchen und diesem eine  entsprechende Entnahme hinzuzufügen?

LG BobbyRyder

DF6GL

Hallo,

Zitatbeim Eingang mehr Informationen (Lieferant, Hersteller und Lieferzustand etc.) hinterlegt werden als beim Ausgang (lediglich Artikel, Charge, Datum und Menge).

Das kann eigentlich nicht sein...


Ein Artikel wird von einem Lieferant/Firma (Konto) geliefert (geht ein)  und ein Artikel wird auch an einen Empfänger/Kunden (auch Konto) abgegeben.

Einen Artikel ohne Kunden auszugeben, ist sinnfrei.

Das Konto (Lieferant/Firma oder Empfänger/Kunde) kann (muss) natürlich aus einer Adress-Tabelle z. B. mittels Kombifeld ausgewählt werden können.


BobbyRyder

Hallo,

ja das ist Richtig, das zum Artikel natürlich auch von Hersteller und Lieferant sowohl im Eingang als auch Ausgang zusammengehören. Diese (Hersteller und Lieferant) sind auch in separaten Tabellen erfasst und können mittels Kombinationsfeld auch ausgewählt werden.

Die Nutzer Datenbank haben aber beim Ausgang keine Ahnung, welcher Lieferant und Hersteller es speziell bei diesem Artikel ist und tragen daher beim Ausgang lediglich Charge, Menge Datum und Artikel ein.

Wäre es möglich nach Auswahl vom Artikel, über ein Kombinationsfeld, die Daten entsprechend der Eingänge automatisch ergänzen zu lassen, damit entsprechend nur ein Ausgangsdatum und Menge eingetragen werden muss?
Der Nutzer muss den entsprechenden Eingang heraussuchen und ergänzt zu diesem einen Ausgang.

MfG
BobbyRyder

DF6GL

Hallo,
lt. der Beschreibung ist davon auszugehen, dass ein Artikel genau einem Lieferanten/Hersteller zugeordnet ist, so dass ein "LieferantenArtikel" sowohl beim Eingang von einem Lieferanten stammt als auch beim Ausgang wieder dem selben Lieferanten zugeführt wird..  ("Aufbewahrungslager", z. B. für die Einlagerung von Autoreifen von Kunden)


In diesem Fall wird braucht der/die Lieferant/Firma gar nicht in der tblBewegungen mitgeführt werden. Es reicht die ID des "LieferantenArtikels" aus einer Tabelle "tblLieferantenArtikel", in der der eigentliche Artikel mit dem Lieferanten vorher schon verheiratet wird.


Wenn das nicht zutreffend ist, dann ist mir unklar, wie und wann denn nun bekannt ist, wem der Artikel abgegeben werden muss.  Natürlich kann man mittels Kombifeld einen Lieferanten/Hersteller auswählen, es fragt sich halt nur, welchen.....

Beschreibe mal die Art und den Zweck dieses Lagers. Poste zudem einen Screenshot des Beziehungsfensters mit allen Tabellen/-feldern sowie den Beziehungen, sofern die hoffentlich existieren.



Matthias_001

April 10, 2021, 08:02:18 #6 Letzte Bearbeitung: April 10, 2021, 08:06:27 von Matthias_001
... ich habe interessiert mitgelesen und denke, dass ,,Bobby's Problem" noch nicht richtig rübergekommen ist.

Er kauft, meine Lesart, ein und denselben Artikel bei verschiedenen Lieferanten - das soll dokumentiert werden und es ergibt sich ein ,Summe Zukauf Artikel x'.
Auf der Anderen Seite wird dieser Artikel an einen Kunden verkauft und es ist egal von welchem Lieferanten dieser immer gleiche Artikel stammt.
Insoweit, meine ich, ist es vlt. doch richtig mit 2 Tabellen zu arbeiten.
1. Zukauf
2. Verkauf
Über Abfrage mit Bezug auf die eindeutige Artikelnummer lässt sich dann jeweils der summierte Zukauf und der summiert Verkauf ermitteln - und Zack: Bestand berechnen...

Achja: Für den Fall, dass zwar ein Einkaufsbestand aber eben noch kein Verkauf vorhanden ist musst Du für die Berechnung halt auf ,Ist Null' abfragen und in der Berechnung entsprechend reagieren.
Vielleicht mal die Funktion nz(....) anschauen.

DF6GL

April 10, 2021, 10:36:10 #7 Letzte Bearbeitung: April 10, 2021, 10:46:10 von DF6GL
Hallo,



Zitatdass ,,Bobby's Problem" noch nicht richtig rübergekommen ist.


das ist wohl so.. Deshalb auch die Aufforderung, den Zweck des Vorgangs zu beschreiben.


Zitatist es vlt. doch richtig mit 2 Tabellen zu arbeiten.

dem will ich widersprechen... 8)

Zwei Tabellen sind hier kontraproduktiv und nicht DB-gerecht.


ZitatFür den Fall, dass zwar ein Einkaufsbestand aber eben noch kein Verkauf vorhanden ist musst Du für die Berechnung halt auf ,Ist Null' abfragen

Da muss gar nichts "auf NULL abgefragt" werden, Es genügt lediglich die Summierung über die Menge eines bestimmten Artikels (wenn Zugangsmenge --> positiv und Abgangsmenge  --> negativ im Feld "Menge" vereinbart wird). Je nach Zielsetzung ist das Kriterium zusätzlich mit dem Lieferanten und/oder dem Empfänger zu erweitern.

Wir reden hier nur von Tabellen/Abfragen und der (späteren) Darstellung in Formularen. Im Anfangs-Post entsteht der Eindruck, dass mit Tabellen gearbeitet wird und nicht mit Formularen.


Wenn zudem das Stichwort  "Charge" fällt, wird das Ganze noch einen Tick komplizierter, wenn es vorkommen kann, dass eine Charge für verschiedenen Ausgaben mengenmäßig auseinandergerissen wird.

Beaker s.a.

Hallo,
Eigentlich ein klares Bild.
Die Beziehung zwischen Artikeln und Lieferanten wird in einer n:m-Tabelle
dargestellt. Deren PK wird FK in einer Chargentabelle, und deren PK kommt
als FK in die Bewegungsdatensätze. Wenn mit einer Position mehrere Chargen
ein- bzw. verkauft werden können/müssen muss da dann allerdings auch noch
eine n:m dazwischen.
Der Bestand, auch einzelner Chargen, ergibt sich dann, wie von Franz mehr-
fach erwähnt, aus der Summe von Zu- (+) und Abgängen (-). Wenn man keine
negativen Werte eingeben möchte, führt man einen Faktor (1/-1) mit.
 
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

BobbyRyder

Hallo,

hier die Beziehungen der Datenbank mit den zwei Tabellen (Ein- und Ausgang).

Noch einmal zum Hintergrund der Datenbank.
Diese soll dazu dienen einen Artikelbestand zu führen.
Also werden verschiedene Artikel von verschiedenen Lieferanten und Herstellern mit verschiedenen Chargen im Eingang erfasst. (Tabelle Wareneingang)
In der zweiten Tabelle wird der Verbrauch der Artikel. (Tabelle Warenentnahme)

Solange ich Abfragen erstelle, bei denen die verschiedenen Chargen nicht beachtet werden, ist auch alles kein Problem, in einem Formular den Aktuellen Artikelbestand errechnen zu lassen. (nur mit dem Trick der "0 Datensätze") hier könnte aber die Nz() Funktion wahrscheinlich helfen

Wenn ich jetzt aber Abfragen erzeuge bei denen die Charge der verschiedenen Artikel beachtet wird, um z.B. eine Inventur durchzuführen, vermehrt die Datenbank die Werte wenn ich sie in einem Formular zusammenfassen möchte.(Wenn 3 Chargen vorhanden wird Datensatz Charge 1 mit Charge 1, 2 & 3; Charge 2 mit Charge 1,2 & 3 uvw. vermehrt)
Die jeweiligen einzelnen Abfragen mit Gruppierung der Chargen und Artikel funktionieren einwandfrei.

Ich hoffe ich konnte das Problem besser darstellen.

MfG
BobbyRyder

DF6GL

Hallo,

fass (endlich) die beiden  Tabellen zu  einer (tblBewegungen) zusammen und erfasse Eingänge als positive Werte und Abgänge als negative... 


Wirf Deine bisherigen Abfragen weg und erstelle neue auf Basis der neuen Bewegungstabelle.



Was ist denn "Ausbuchungsgröße?"

BobbyRyder

Hallo,

ich bin schon dabei eine neue Datenbank anzulegen in der Ein- und Ausgang in einer Tabelle erfasse werden.

Stehe da aber vor einem neuen Problem :-\
Ich würde gerne ein jeweils entsprechendes Formular erstellen mit dem der Eingang als auch der Ausgang erfasst werden können. Hier hätte ich gerne beim Ausgang eine Schaltfläche mit der der Nutzer den entsprechenden Eingang heraussucht und diesem dann einen Ausgang hinzufügen kann.

Mfg
BobbyRyder

PS: Die Ausbuchungsgröße ist die Menge die je nach Artikel ein bzw. ausgetragen wird (z.B. Beutel, Flasche oder Karton).

DF6GL

Hallo,

also, ich versteh die Vorgehensweise nicht..


Zitateine Schaltfläche mit der der Nutzer den entsprechenden Eingang heraussucht und diesem dann einen Ausgang hinzufügen kann.

Muss denn ein Eingang an einen bestimmten Ausgang gekoppelt sein? Soll heißen, ein bestimmter Eingang ist auch nur für einen bestimmten Ausgang
 (vor)bestimmt? 


ein jeweils entsprechendes Formular erstellen mit dem der Eingang als auch der Ausgang erfasst werden können.
Und wozu dafür mehrere Forms?  Es genügt eines..


Wenn ein Eingang erfasst wird, wird die Menge positiv angegeben und neben den anderen Daten der Lieferant mittels Kombifeld ausgewählt.  (Kombifeldliste bezieht die Daten aus tblLieferanten)

Wenn ein Artikel ausgebucht wird, können ebenfalls mit einem Kombifeld alle Eingänge für diesen Artikel aufgelistet und ausgewählt werden. Aber dieser Sinn erschließt sich mir nicht, wenn dieser Ausgang, wie oben angedeutet, nicht für einen bestimmten Lieferanten (Kunden??) reserviert/vorgesehen ist.



ZitatIn der zweiten Tabelle wird der Verbrauch der Artikel. (Tabelle Warenentnahme)   
und  .. wie geht es hier im Satz weiter? Für WEN ist der Verbrauch bestimmt, bzw. WER "verbraucht" die Entnahme denn??

Ist das einfach ein Laden, der an x-beliebige Kunden die Artikel über die Theke verkauft? Dann wäre der Laden der "Kunde" im DB-Sinne und es bräuchte keine Zuordnung zu den eingegangenen Artikeln geben und somit ist das Auswahl-Kombifeld überflüssig.

Ich glaube, es muss (von Dir) noch ein bisschen Überlegung zur Warenentnahme aufgewendet werden.., oder Du erzählst mal umfassend und genau, was denn der Sinn der DB sein soll. (Wie schon mal gefragt).

Zitateinen Artikelbestand zu führen.

ist viel zu vage...



Bei
ZitatDie Ausbuchungsgröße ist die Menge die je nach Artikel ein bzw. ausgetragen wird (z.B. Beutel, Flasche oder Karton).

treten auch weitere Fragen auf. Sind das die (nicht aufdröselbaren) Mengeneinheiten der Artikel oder sind das Verpackungeinheiten, z. B. ein Karton, der 6 Weinflaschen beinhaltet, von denen die Weinflaschen aber einzeln ausgegeben (und verkauft) werden?


BobbyRyder

Hallo,

Zur Datenbank:
die Datenbank soll dazu dienen einen Artikelbestand von Verbrauchsmaterialien zu führen. Dies bedeutet es werden Artikel von unterschiedlichen Lieferanten angeliefert (Eingang) und dann je nach Artikel in unterschiedlichen Mengen (Ausbuchungsgröße) verbraucht (Entnahme). Logischer Weise kann nur ein Artikel verbraucht werden der auch geliefert wurde, daher das Auswählen von einem entsprechenden Eingang und diesem einen Ausgang zuzuordnen. Wie vorher schon beschrieben ist dem Nutzer bei der Entnahme nicht bekannt wer den Artikel geliefert hat. Natürlich kann man dies in der entsprechenden Tabelle nachsehen und die Daten dann entsprechend beim eintragen der Entnahme eingeben, nur sind die Nutzer nicht wirklich erfahren im Umgang mit Datenbanken. Daher mein vorhaben dies alles in Formularen mit Schaltflächen, Kombinationsfelder etc. so zu erstellen, dass ein öffnen der entsprechenden Tabellen mit den Daten für den Nutzer nicht erforderlich ist.

Zur Ausbuchungsgröße:
Es wird nicht von jedem Artikel grundlegend ein Stück entnommen, hier werden teilweise Einzelverpackungen oder ganze Verpackungseinheiten entnommen. Daher diese angelegte Tabelle Ausbuchungsgröße die dann den Artikeln entsprechend zugeordnet ist.

MfG
BobbyRyder

DF6GL

Hallo,

die Beschreibung liefert eigentlich nicht Neues...


<tutorial>

ZitatWie vorher schon beschrieben ist dem Nutzer bei der Entnahme nicht bekannt wer den Artikel geliefert hat
Das ist ja auch irrelevant für die Entnahme... und ohne Bedeutung, sofern es egal ist, von welchem Lieferanten der Artikel stammt.

ZitatDies bedeutet es werden Artikel von unterschiedlichen Lieferanten angeliefert (Eingang)

Ja, Ok. Danach ist der Vorgang abgeschlossen und hat weiter keine besonderen Maßnahmen zur Folge.


Zitatund dann je nach Artikel in unterschiedlichen Mengen (Ausbuchungsgröße) verbraucht (Entnahme).


Ja, ok. Vielleicht könntest Du noch verraten, in welcher "Branche" die Db eingesetzt wird (industrielle Fertigung, Maschinenwartung, Fahrzeugreparatur (Autowerkstatt) , Handel oder sonst was)


Zur Ausbuchungsgröße:

Ich rate dringend , die "Ausbuchungsgröße"  als "Mengeneinheit" (Stk, Liter, 0,75l Flasche, 1l Flasche, Meter, kg, Set, Packung etc.)  zu definieren. Dabei ist die Anlieferungsverpackungsgröße irrelevant und dient höchstens zur Info. Wenn also 50 Weinflaschen-Kartons zu je 6 0,75l Flaschen  eingebucht werden, ergibt das eine Buchungsmenge von 300 0,75l Flaschen. Wenn z. B. 10 Kartons mit je 100 Packungen zu je 100 Schrauben angeliefert werden, ergibt das 100 * 10 = 1000 Packungen Schrauben.  Es werden also (hier) keine einzelnen Schrauben geführt  (Einnahme und Ausgabe!), lediglich die dem Artikel zugewiesene Mengeneinheit.


Die Zuordnung der Mengeneinheit zum Artikel erfolgt in der Artikeltabelle und es muss eine Normierung ( Umrechnung der Menge) auf die definierte Mengeneinheit stattfinden.


Ansonsten wird das ganze extrem komplizierter.


ZitatNatürlich kann man dies in der entsprechenden Tabelle nachsehen und die Daten dann entsprechend beim eintragen der Entnahme eingeben, nur sind die Nutzer nicht wirklich erfahren im Umgang mit Datenbanken.


Hier geht es doch gar nicht um die Erfahrung der User mit der Db.... Dafür erstellt man doch eine DB-Anwendung, um dem User das Leben leichter zu machen und weniger Fehler zuzulassen.  Zudem brauchen die User bei der Entnahme nur die Artikelnummer und die Menge kennen und eingeben. Außerdem haben Tabellen für den User keinen Relevanz.  Der User bedient ein Formular, das verschiedene Aufgaben im Hintergrund wahrnimmt und den User über den Zustand der "Lagersituation" informiert. Z. B. wird nach Eingabe der Artikelnummer die aktuelle Lagerbestand angezeigt und der User kann evtl. die auszugebende Menge anpassen.



ZitatDaher mein vorhaben dies alles in Formularen mit Schaltflächen, Kombinationsfelder etc. so zu erstellen, dass ein öffnen der entsprechenden Tabellen mit den Daten für den Nutzer nicht erforderlich ist.

Das ist doch nicht weiter zu betonen. Das muss immer so sein und ist Grundlage einer ablaufgesteuerten Datenbank-Anwendung. User haben mit Tabellen nichts am Hut und sehen diese auch nicht.

Alles was ein User machen muss, ist die Bedienung von Formularen, die den Arbeitsablauf seiner Tätigkeiten vorgeben und dabei entstehende Daten erfassen und speichern.


</tutorial>