Neuigkeiten:

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

Mobiles Hauptmenü

Warenlager Lösung - Access

Begonnen von hirschi, November 08, 2013, 14:02:06

⏪ vorheriges - nächstes ⏩

hirschi

Hi zusammen,

ich bin gerade dabei ein kleines Projekt umzusetzen. Hierbei soll eine MS Access Lösung den Warenbestand in einem Lager verwalten. Ich habe schon eine Themen in diesem Forum durchsucht, bin aber nicht auf eine optimale Lösung gestoßen, da meine Anforderungen sehr speziell sind.

Zu den Anforderungen:

1. In einem Lager ist ein Besand von Artikeln vorhanden. Diese sind anhand der Artikelnummern getrennt in Regalen abgelegt. Zunächst soll der IST-Lagerbestand in einer Tabelle erfasst werden.

2. Wenn neu produzierte/bestellte Artikel für den Versand bereit stehen, werden diese dem Lager hinzugefügt. Dabei soll dann die Tabelle des IST-Lagerbestands aktualisiert werden, sodass diese immer auf dem aktuellen Stand ist.

3. Wenn die Artikel aus dem Lager entnommen werden und in den versand gehen, soll die Menge der entnommenen Artikel aus dem IST-Lagerbestand abgezogen werden.

4. In den Formularen soll dann in einer Art Registrierkartenübersicht jeder Monat des laufenden Jahres abgebildet werden und die gesamte Warenbewegung dort hinterlegt sein. (also wenn im Monat X Artikel Y ins Lager rein kommen und entommen werden)

Im Grunde solls das für das erste gewesen sein, sodass ein Grundgerüst für die Anwendung gebaut wird. (Der IST-Lagerbestand soll im Vorfeld einmal initial definiert und dann nur noch über "Hinzufügen" und "Entnehmen" von Artikeln aus dem Lager auf dem aktuellen Stand gehalten werden)

Wenn dies steht, soll mittels Formularen eine Art GUI/Interface gebaut werden, sodass man über Buttons den Lagerbestand aktualisieren kann.

Später soll dann ein Barcodescanner installiert werden, der über einen eingescannten Barcode diesen mit der entsprechenden Artikelnummer verknüpft und die dazugehörigen Daten aus Tabellen zieht. So könnte ich mir vorstellen, dass wenn der Barcode eines Artikels eingescannt wird, die Anwendung sich alle zum Artikel gehörigen Daten aus der Tabelle "Produkte" zieht und nur noch die Menge (für Ein- oder Ausgang) definiert werden muss. Anschließend soll dann der Lagerbestand durch Klick auf z.B. einen "Aktualisietren"-Button entweder erhöht oder verringert werden.

Bei den Artikeln handelt es sich um Schreibgeräte. Hierzu habe ich folgende Tabellen definiert:


1. Produkte
Artikelnummer -> Zahl (Primärschlüssel)
Produktgruppe -> Text
Artikelname -> Text
Art des Schreibgeräts -> Text
Barcode -> Zahl
Bild -> Anlage



2. Lagerbestand
Artikelnummer -> Zahl (Primärschlüssel)
lagerbestand -> Zahl
letzter Lagereingang -> Datum
letzter lagerausgang -> Datum



3. Lagereingang
Artikelnummer -> Zahl (Primärschlüssel)
Eingang -> Datum



4. lagerausgang
Artikelnummer -> Zahl (Primärschlüssel)
Ausgang -> Datum


Habt ihr nun Anmerkungen für mich, wie ich jetzt weiter verfahren kann, ob meine Listenvorschläge vllt. auch gar nicht sinnvoll sind. Ich bin in MS-Access noch nicht so affin, aber sehr gewollt dies zu werden und da erscheint mir ein solches Projekt als guter Einstieg.

ich bin schon auf eure Tipps und Anregungen gespannt. Vielen Dank schon im Voraus! 

DF6GL

Hallo,


Crosspostings sind unerwünscht...

http://www.office-loesung.de/ftopic626938_0_0_asc.php


Entscheide Dich also für ein Forum...




Als Einstiegstipp:


Tabellen:

tblArtikel       hier werden alle Artikel erfasst

tblArtikelArten       Nachschlagetabelle für Artikelart

tblArtikelGruppen    Nachschlagtabelle für Artikelgruppe
 
tblLagerbewegungen     Erfassung der Ein- und Auslagerungen


Nach den Normalisierungsregeln erstellt , die in u. st. Links 1 und 1a zu finden sind.




Beim Barcode ist zu überlegen, ob der Wert nicht identisch mit der Artikelnummer ist.   Wenn so, könnte dieser Wert gleich für die Artikelnummer (Primärschlüssel in tblArtikel) hergenommen werden.

hirschi

Hallo DF6GL,

vielen Dank schon mal für die schnelle Antwort.

Zu deinem normalisierten Vorschlag habe ich ein paar Fragen:

1. Wenn ich in der Tabelle "tblArtikel" alle Atikel erfasse - ich habe jetzt mal angenommen dass du damit den tatsächlich vorhandenen Lagerbestand meinst - wo sollte ich dann die Artikelmekrmale ausprägen (Beschreibung, Bild des Artikels, etc...)?

2. Wenn ich (eher zukünftig dann) bspw. ein monatliches Controlling des Lagerbestandes fahren will, könnte ich dann dies anhand des Datums von Waren Ein- bzw. Waren Ausgängen machen, dass in der Tabelle "tblLagerbewegung" abgebildet ist?

Zu deiner Anmerkung bzgl. den Barcodes, diese würden wahrscheinlich eher zufällig generiert werden, da die Artikelnummern teilweise sehr klein (~ 3 Ziffern) sind. Wäre dann denkbar, für die Barcodes eine extra Tabelle zu definieren, oder kann man diese in der Tabelle "tblArtikel" ausprägen?

Danke schon mal!

Stapi

Hallo Hirschi

Willkommen hier im Forum. :)

Wie @DF6GL dir schon Mittgeteil hat das es nicht gewünscht ist in zwei Foren ein gleichen Beitrag zu eröffnen.
Nun hast du dich für dieses Forum Entschieden aus diesem Grund Empfehle ich bei einem solchen Thema die Datenbank in Access Format 2000-2003 mit Spieldaten ohne Formulare ein zustellen um schon bei dem Tabellen Aufbau dir Hilfe zukommen zu lassen.  ;)
Warum dieses Access Format, der Grund ist das die größere Anzahl hier im Forum noch mit dem Format arbeiten und dir schneller helfen können.
Beschreiben kann man viel sehen ist besser und schneller. :D
Grüße aus dem schönen NRW
Stefan

DF6GL

Hallo,

die vorgeschlagen Tabellen sollten entspr. der beschriebenen Sachlage zunächst ausreichend  sein.  Für den Barcode ist da keine extra Tabelle nötig, weil der Barcode ein Attribut des Artikels darstellt. 

Erstelle erst mal die genannten Tabellen, setz die Beziehungen zwischen den Tabellen und lad die DB dann hier hoch. Dann sprechen wir dann über Korrekturen/Optimierung/Erweiterungen..

hirschi

Hi zusammen,

zunächst einmal vielen Dank für die schnellen Antworten. ich habe mir mittlerweile noch einmal ein paar Gedanken gemacht. Mir ist es nur leider momentan nicht möglich Dateien hochzuladen, daher versuche ich es nocheinmal in Schriftform - ich hoffe das geht auch  :).

ich habe jetzt 6 Tabellen definiert:

1. tblArtikel
Artikelnummer(primary key)Zahl
BarcodeZahl

2. tblArtikelArt
Artikelnummer(primary key)Zahl
ArtikelartText

3. tblArtikelGruppe
Artikelnummer(primary key)Zahl
ArtikelgruppeZahl

4. tblWarenBewegung
Artikelnummer(primary key)Zahl
WareneingangDatum
WarenausgangDatum

5. tblLagerBestand
Artikelnummer(primary key)Zahl
AnzahlImLagerZahl

6.tblArtikelEigenschaften
Artikelnummer(primary key)Zahl
NameText
BeschreibungText
AbbildungBild/Anhang

Die Beziehungen zwischen den Tabellen sollen über die Artikelnummer gesetzt werden. Ist es überhaupt möglich/Sinnvoll, in jeder Tabelle die Artikelnummer auszuprägen?

Vielen Dank schon mal im Voraus für die Antworten!

MzKlMu

#6
Hallo,
Deine Tabellen sind ausnahmslos alle falsch.
in den Tabellen tblArtikelArt und tblArtikelGruppe kann die Artikelnummer niemals Primärschlüssel sein. Beide Tabellen benötigen einen unabhängigen PS.
In die Tabelle tblArtikel müssen 2 Fremdschlüsselfelder für Art und Gruppe.
Die Tabelle tblWarenBewegung ist noch zu ändern:

Artikelnummer(primary key) Zahl
Vorgangsdatum Datum
Vorgangsart Zahl (Zugang/Abgang) Tabelle dazu erforderlich
Menge Zahl (+ für Zugang und - für Abgang)

Die Tabelle tblLagerBestand ist ersatzlos überflüssig. In einer DB werden keine Bestände geführt, Bestände werden über die Menge der Tabelle tblWarenBewegung  errechnet. Die Summe der Mengen gruppiert über den Artikel ist der Bestand, stets aktuell und automatisch.

In der Tabelle tblArtikelEigenschaften ist der PS auch falsch, hier ist ebenfalls ein eigenständiger PS erforderlich. Zu dieser Tabelle noch folgende Fragen:

Gibt es mehr als ein Bild je Artikel?
Gibt es mehr als eine Eigenschaft je Artikel?

Und bei der Gelegenheit, keine Bilder direkt in der DB speichern, sondern nur den Pfad und Dateiname zum Bild. Und dann entweder beim Anzeigen des Datensatzes erst das Bild zuweisen, oder (was ich besser finde) per Doppelklick das Bild mit einem normalen Bildbetrachter ansehen.
Gruß Klaus

DF6GL

Hallo,


nun, dieser Tabellenaufbau ist nicht geeignet...



1) Die Tabellen sind nicht normalisiert (siehe u.  st. Links 1 und 1a)
2) In den Tabellen fehlen weitere beschreibende Attribute.
3) Datentyp von "Barcode" ist als "Zahl" ungeeignet, hier wäre TEXT richtig.
4) Keine reservierten Wörter verwenden ("Name") und Benamsung systematisieren.
5) Einige Tabellen sind überflüssig/unbrauchbar . ("tblLagerbestand",  Bestände werden nicht statisch gespeichert, sondern über Abfragen aktuell ermittelt)



1. tblArtikel
ArtNr(primary key) Zahl  ' Nur dann Zahl, wenn die Artikelnummer vorher schon feststeht und tatsächlich nur aus Ziffern und ohne führende Nullen besteht
Art_AAID  (Fremdschlüssel aus tblArtikelarten) !!!
Art_AGID (FK aus tblArtikelgruppen) !!!
Art_Barcode (Text)
Art_Name (Text)
Art_Beschreibung (Text)   'Was soll in diesem Feld stehen?
Art_Abbildung (Text)  'enthält PfadDateiNamen einer Bilddatei
.' weitere beschreibende Felder , falls erforderlich.
.
.



2. tblArtikelArten
AAID  (primary key, Autowert)
AA_Bezeichnung (Text)
.'weitere beschreibende Attribute, falls erforderlich
.
.



3. tblArtikelGruppen
AGID (primary key Autowert)   ' wenn die Artikelgruppe aus reinen und wenigen Ziffern besteht, könnte dieser Wert hier gleich als PK dienen, dann: PK,Zahl,Long
AG_Bezeichnung (Text)
.
.



4. tblWarenBewegung
WBID (PK, Autowert)
WB_ArtID (FK auf tblArtikel, Long ) !!!
WB_Menge (Double, wenn Kommazahlen als Menge vorkommen können , sonst LONG)
WB_BWAID (FK auf Tabelle "tblBewegungsarten", z. B. für Ein-Auslagerung, Inventurkorrektur, Stornierung etc..)
WB_MengeneinheitID (Long, falls erforderlich ,z. B. wenn unterschiedliche Gebinde vorhanden sind, dabei als FK auf weitere Tabelle tblME ausführen)
WB_WBDatum  (Datum/Uhrzeit)
WB_BuchungskontoID (falls erforderlich, dabei  als Fremdschlüssel auf weitere Tabelle "tblBuchnungskonten") ausführen.
WB_BearbeiterID  (Long, falls erforderlich, jedoch empfohlen, als FK auf weitere Tabelle tblMitarbeiter)
WB_Notiz (TEXT, Memo, empfohlen)
.'weitere beschreibende Attribute
.
.


5. tblLagerBestand
Artikelnummer(primary key) Zahl
AnzahlImLager Zahl



6.tblArtikelEigenschaften
Artikelnummer(primary key) Zahl
Name Text
Beschreibung Text
Abbildung Bild/Anhang



hirschi

Hallo,

Vielen Dank für die Tipps, ich habe jetzt mal einen großen Teil übernommen und die Tabelle für Bewegungsart hinzugenommen. Einige Attribute habe ich weggelassen, da diese zunächst noch nicht relevant sind. Könnt Ihr nochmal einen kurzen Blick drüber werfen, ob das so schon passt, oder ob noch Änderungen notwendig sind, bevor ich weiter machen kann.

1. tblArtikel
ArtNr(PK) Zahl 
Art_AAID  (FK aus tblArtikelarten)
Art_AGID (FK aus tblArtikelgruppen)
Art_Barcode (Text)
Art_Name (Text)
Art_Beschreibung (Text)   hier soll ein kleiner Beschreibungstext zu verwendetem material, Fertigung, etc. stehen (ist schon vorhanden)
Art_Abbildung (Text)  Link zur Datei
(hier zunächst keine weiteren Attribute erforderlich)


2. tblArtikelArten
AAID  (PK, Autowert)
AA_Bezeichnung (Text)



3. tblArtikelGruppen
AGID (PK, Autowert)
AG_Bezeichnung (Text) erforderlich, da die Artikelgruppe aus beschreibendem Text besteht



4. tblWarenBewegung
WBID (PK, Autowert)
WB_ArtID (FK auf tblArtikel, Long )
WB_Menge (LONG)
WB_BWAID (FK auf tblBewegungsarten)
WB_WBDatum  (Datum)
WB_Notiz (TEXT, Memo, empfohlen)
(Mitarbeiter sind zunächst irrelevant, da das System erstmal nur auf einem PC ausgeführt werden soll um grundsätzlich einen Warenbestand zu verwalten - am Anfang eher einfach, könnte aber zukünftig ausgebaut werden)



5. tblBewegungsarten
BAID (PK, Autowert)
BA_Zugnag (Zahl, z.B. 1)
BA_Ausgang (Zahl, z.B. 2)


Danke schon mal!!! :)

MzKlMu

Hallo,
die Tabelle tblBewegungsarten ist falsch. Die sollte so sein:

BAID (PK, Autowert)
BA_BewArt (Text)

Im einfachsten Fall 2 Datensätze (Zugang und Abgang), die Zahl ergibt sich aus dem PK. In dieser Tabelel würde ich noch einen Multiplikator einbauen, über den man das Vorzeichen automatisch erzeugen kann.

Im Anhang noch ein einfaches Beispiel mit mehreren Vorgangsarten. Es gibt ja auch Fehlbestände etc.
Das Beispiel enthält nur 3 Tabellen und ist somit für deinen Fall unvollständig. Es soll nur das Prinzip zeigen.
Gruß Klaus

hirschi

Hallo MzKlMu,

wenn ich die tabelle tblBewegungsArten dann wie folgt aufbaue:

BAID(PK, Autowert)
BA_BewArt (Text)
BA_Multiplikator (Zahl)

erzeuge ich folgende Datensätze:

1:

1; Zugang; 1
2; Ausgang; -1

ist das so richtig, oder wie soll ich den Multiplikator verwenden? Wenn ich nun eine SQL-Abfrage bauen will, die mir den aktuellen Lagebestand eines bestimmten Artikel ausgibt, wie baue ich dann dort den Multiplikator ein, sodass ich anhand des Bewegungsart den Zu- bzw. Ausgang richtig auf eine Summe berechne?

Vielen Dank schon mal!!!

DF6GL

Hallo,

die Bewegungsmengen werden anhand der Tabelle tblWarenbewegung berechnet.

Bau erst mal eine DB mit Tabellen entspr. den Vorschlägen auf. Dann korrigieren wir das auf Deine Anforderungen hin und erst nach Aufbau von Formularen zur Datenpflege kommen zu guter Letzt Auswertungen (Lagerbestände) hinzu

hirschi

Hallo DF6GL,

Die Tabellen habe ich schon gebaut und mit Beispieldatensätzen befüttert. Hmmm blöd nur, dass ich euch die im Moment nicht zur verfügung stellen kann. Ich werde die DB heute Abend mal hochladen...

Kann ich denn sonst schon irgendwie weiter basteln?

Danke schon mal :)

DF6GL

Hallo,


bastel ruhig weiter, solange Du Dich GENAU an die Vorschläge hältst und Dir vielleicht vorher noch Gedanken machst, welche Methode bei den Warenbewegungen angewendet werden soll:

1)  Eingabe von positiver/negativer Menge zur Unterscheidung von Zu-und Abgängen  mit oder ohne  Verwendung einer Vorzeichenkennung ("Multiplikator") oder Kennzeichnung über die "Bewegungsart"
2) Alles, was künftig eingebaut werden könnte, muss jetzt schon vorgesehen werden.   Nachträgliche Änderungen an dieser Stelle sind meistens schwierig bis unmöglich.
3) Stelle ein GENAUES Konzept (Schritt-für-Schritt-Abläufe) für jeweils alle möglichen Lagerbewegungsvorgänge zusammen und prüfe, ob dieses Konzept mit den Tabellen abbildbar ist.
4)  "Link zur Datei": Von Links haben wir nicht gesprochen..  In das Abbildungs-Feld kommt als REINER Text die Pfaddateiname der Bilddatei (wie geschrieben)
5) Beherzige den Einwand von Klaus zur tblBewegungsarten...

hirschi

Hallo DF6GL,

okay, dann werde ich mich mal an den grundsätzlichen Layouts der Formulare versuchen.

ich habe allerdings noch ein paar Fragen zu deinen Punkten:

zu 1) Mein Plan war es jeweils ein separates Formular (die sich dann sehr ähnlich sehen werden) für den Zu- bzw. Ausgang zu bauen. Könnte man dann hierbei nicht im VBA-Code definieren, dass die beim "Ausgang" eingetragene Menge IMMER negativ sein soll? oder funktioniert das nicht so einfach?

zu 2) Die ganze Platform will ich dazu nutzen, einerseits dieses kleine Projekt umzusetzen, andererseits - und das ist auch der eigentliche Grund - um zu lernen wie man grundsätzlich an solch ein Vorhaben rangeht um etwas derartiges einmal ganz alleine umsetzen zu können und auch um den Umgang mit Access zu lernen. Von daher ist es im Moment unerheblich, ob noch Änderungen in Zukunft gemacht werden sollen oder nicht -> in diesem Projekt dann wohl eher nicht :)

zu 3) Es soll zunächst bei der Einführung der aktuelle Lagerbestand definiert und in die DB eingepflegt werden -> die lässt sich dann ja am einfachsten über das Formular zur Lager Befüllung realisieren (wird dann halt eine einmalig sehr große Lager Befüllung). Dann haben wir den IST-Stand des Lagers schon mal im System. Alles was dann noch kommen kann ist:

1. neu gefertigete Schreibgeräte kommen ins Lager.
2. Schreibgeräte die im Lager sind verlassen dieses.

mehr wird es hier nicht geben (soll wirklich so minimalistisch gehalten werden)

zu 4. bevor ich hier die Frage stelle möchte ich diese anhand eines beispiels verdeutlichen:
Ein Mitarbeiter hat die Aufgabe 5 Schreibgeräte (gleiche Artikel) aus dem lager zu entnehmen. Dazu scannt er den Barcode des Stifts ein. Der barcodescanner fungiert hierbei als Tastatur. Der eingescannte Barcode wird im Formular für die Lager Entnahme in ein textfeld eingefügt. Anschließend werden alle zum Schreibgerät nötigen Eigenschaften in entsprechende weitere Textfelder automatisch eingefügt. nun muss der Mitarbeiter nur noch die menge (hier 5) in ein Feld eintragen und durch Klick auf z.B. einen Button "Aus Lager entnehmen" klicken und die 5 Schreibgeräte werden vom Lager IST-bestand abgezogen.
Ich habe hier in der Beschreibung von allen nötigen "Eigenschaften" geredet. hierzu zähle ich auch ein Bild des Schreibgeräts. Würde sich das realisieren lassen, dass Access automatisch ein Bild dynamisch in ein Feld im Formular einfügt/abbildet?

zu 5. Wenn es so einfach geht wie in 1. ist das dann noch notwendig?


vieln Dank schon mal!!!