Hi,
das ist ja eigentlich gar nicht so schwer. Ich bin zwar kein Access Mensch, aber geh halt ganz einfach gesagt mal so vor. Ich kann natürlich nur SQL Datentypen und weiß jetzt nicht, ob es die in Access auch gibt.
- Datendefinition
Lege fest, welche Basisdaten, Stammdaten und Bewegungsdaten in dem Projekt gebraucht werden. Demnach erstellst Du die Tabellen. Realisierbar sind also Tabellen, wie
a) Basisdaten mit etwaigen Einstellungen
- Artikellimit gesamt - integer
- Lager ins Minus - tinyint(1) Werte 0=nein 1=ja
- fachprefix (Buchstabe vor einem Fach/Ablageort in einem Regal)
- diverse andere globale Einstellungen/Voreinstellungen
b) Stammdaten
Hier wird's dann schon komplexer.
b.1) Mitarbeiter
id - int AutoIncrement
name1 - varChar(100) NOT NULL
name2 - varChar(100) NULL
name2 - varChar(100) NULL
...evtl. Felder für die Anschrift...
Hinweis zu b.1: Den Mitarbeiterstamm könnte man zudem um eine Abteilungstabelle erweitern und die Mitarbeiter einer Abteilung zuordnen, damit hinterher weitereichender Auswertungen möglich sind.
Der Mitarbeiterstamm wird dahingehend benötigt, dass man spätere Lagerbewegungen zuordnen kann und weiß, wer welches teil entnommen, bzw. eingelegt hat.
b.2) Lager
id - int AutoIncrement (gleichzeitig die Lagernummer)
bezeichnung - varChar(100) NOT NULL
beschreibung - text NULL
...evtl. Felder für die Anschrift...
Hinweis b.2: Die Aufteilung in eine Lagerstandortverwaltung ermöglicht später das Hinzufügen weiterer Anschriften, zum Beispiel, wenn ein weiterer Lagerstandort mit seinen eigenen Regalen an einer anderen Anschrift eröffnet wird.
b.2.1) Regal
id - int AutoIncrement (gleichzeitig die Lagernummer)
lager_id - int(11) NOT NULL (Zuordnung zum Lager)
bezeichnung - varChar(100) NOT NULL
beschreibung - text NULL
raumnummer - varChar(50) NULL (Raumnummer im Haus)
b.2.1.1) Regalfaecher
id - int AutoIncrement
regal_id - int(11) NOT NULL (Zuordnung zum Regal)
bezeichnung - varChar(100) NOT NULL
kurzzeichen - varChar(20) (Kurzbezeichnung des Fachs)
beschreibung - text NULL
...evtl. weitere Merkmale zum Fach (Höhe, Breite, Tiefe, Tragkraft)...
b.3) Artikel
id - int AutoIncrement
bezeichnung - varChar(250) NOT NULL
beschreibung - text NULL
...weitere Informationen...
Hinweis zu b.3: Zu der Artikelverwaltung empfehle ich weitere Stammdaten in eigenen Tabellen zu erfassen. Diese sind Mengeneinheiten (Kurz- und Langformat), Warengruppen und Zuordnung der Artikel zu diesen. Wenn es sich nur um eine hausinterne Anwendung handelt, erübrigen sich Zuordnung und Erfassung von Preisen/Preistabellen, Rabatttabellen, Datenblaetter etc..
c) Bewegungsdaten
In den Bewegungsdaten werden nun alle Vorgänge erfasst. Jeder Vorgang wird mittels Kopf erfasst und enthält gewisse Bewegungen/Positionen.
c.1) Lagerbewegungen
id - int AutoIncrement
datum - datetime NOT NULL
beschreibung - text NULL
erfasser_id - ID des Mitarbeiters, der den Vorgang erfasst hat
m_id - Mitarbeiter, an den das Material gegeben wurde, bzw. von dem das Mat. entgegengenommen wurde
Hinweis zu c.1: So wird jeder Vorgang einem Mitarbeiter zugeordnet und Du kannst im Nachhinein sehr leicht feststellen, wann wer was entnommen und eingelegt hat. Sogar ein Rückschluss auf die eintragene Person ist so möglich.
c.1.1) Bewegungspositionen
id - int AutoIncrement
lb_id - int NOT NULL (Zuordnung zur Lagerbewegung)
art_id - int(11) (Zuordnung Artikel)
einaus - tinytext (Werte "Eingang" und "Ausgang" - zur Definition ob die Position ein Wareneingang oder Ausgang war)
regalfach_id - int(11) (Zurodnung zum Regalfach, somit Rückverfolgung auf Regal und Lagerstandort möglich)
menge - decimal(13,3) NOT NULL (Menge von dem ein-/ausgehenden Artikel)
So, aus dem Stehgreif fällt mir jetzt nicht mehr ein. Natürlich kann man das Ganze locker und leicht um Seriennummern erweitern. So werden Seriennummern nachvollziehbar. Man kann einen Lieferantenstamm anlegen und im Artikelstamm Garantiehinweise hinterlegen, damit man anhand der Seriennummern auch gleich einen Garantienachweis erstellen kann. Dies allerdings dann nur, wenn man auch einen Wareneingang im Zusammenhang mit dem Einkauf anlegt.
Da gibt's sehr sehr viele Möglichkeiten, die ich allesamt schon mal realisiert habe. Aber so im einfachsten Sinne, dürften die Tabellen oben für Deine Zwecke reichen. Nagelt mich ans Kreuz, wenn ich was vergessen habe ^^.
Viele Grüße
Hurga