Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: nockenkoenig am April 28, 2016, 15:35:37

Titel: Datenbankprojekt - Ersatzteilliste [Anfänger]
Beitrag von: nockenkoenig am April 28, 2016, 15:35:37
Moin und schonmal vielen Dank im voraus!
Beachtet bitte auch den Anhang.

Ich bin im Zuge meiner Abschlussarbeit dabei für eine kleine Reederei ein Ersatzteillager zu erstellen bzw. die passende Verwaltung dazu aufzubauen. Das schreit förmlich nach einer Datenbank.

Ich habe eine Tabelle erstellt die alle Ersatzteile ohne die Menge auflistet. Dazu eine Tabelle mit potentiellen Zulieferern und eine Tabelle mit Schiffen. Es besteht durchaus die Möglichkeit das sich bestimmte Maschinen (Motoren, Pumpen usw) auf mehreren Schiffen befinden, daher die m:n Beiehung. Des weiteren besteht so die Möglichkeit die Datenbank noch um eine allgemeine Inventarliste zu erweitern.

Und jetzt das Problem:
Am Firmensitz befindet sich ein großes Ersatzteillager für alle Teile, außerdem führt natürlich jedes der momentan 2 Schiffe ein gewisses Kontingent an Teilen mit sich.
Wie kriege ich das ganze also gesplitted? Ist der im Anhang gezeigte Ansatz richtig? Wenn ja wie kann ich dann das jeweilige Schiff zuweisen?

Oder erstelle ich für jedes Schiff zwei Lager (See und Land) mit den jeweiligen Lagerorten und Mengenangaben der Teile? Aber was passiert wenn die Reederei zuwachs bekommt? Ich will nicht jedes mal wenn ein Schiff dazukommt neue Tabellen erstellen.
Im Idealfall wird ja hinterher alles über die Formulare gesteuert ohne das man andauernd die Tabellen selber verändern muss.

Ich bin blutiger Anfänger was Access und Datenbanken allgemein angeht. Vielleicht liegt die Lösung auf der Hand, mittlerweile sehe ich aber den Wald vor lauter Bäumen nicht mehr.

Vielen Dank :-)
Titel: Re: Datenbankprojekt - Ersatzteilliste [Anfänger]
Beitrag von: MaggieMay am April 28, 2016, 16:25:00
Hallo,

sehe ich das richtig, dass die tblErsatzteile lediglich die Ersatzteiltypen enthält, nicht aber konkrete, einzelne Teile? Es gibt also nichts, an dem du ein konkretes Teil identifizieren könntest?

Was das Datenkonzept betrifft, so solltest du auf keinen Fall zwei Lagertabellen anlegen, sondern beides in eine zusammenführen und See und Land mittels Kennzeichen unterscheiden. Wobei eigentlich auch das Vorhandensein der Schiffs-ID genügen könnte, oder was hast du vor mit dem Datenfeld "LanSchiff"?

Titel: Re: Datenbankprojekt - Ersatzteilliste [Anfänger]
Beitrag von: Stapi am April 29, 2016, 19:23:03
Hallo
In einem Schiff kann das Teil als Bauteil verbaut sein, muss es aber nicht zwingend als Ersatzteil mitführen. Somit ist die Zuordnung wo welches Teil in welchen Schiff verbaut ist richtig. Nun würde ich eine weitere Tabelle führen wo ich die Mengen und den Lagerort angeben kann im Bezug zu dem Bauteil/ Ersatzteil.
Somit besteht die Möglichkeit zu sehen in welchen ET Lager stehen welche Mengen noch zur Verfügung.
Titel: Re: Datenbankprojekt - Ersatzteilliste [Anfänger]
Beitrag von: MzKlMu am April 29, 2016, 19:31:22
Hallo,
@nockenkoenig
willst Du nur die Mengen wissen, die noch auf dem Lager sind (ohne Schiff) ?
Wie gesagt, brauchst Du eine Tabelle für die Ersatzteilbewegungen. Diese zusätzliche Tabelle muss eine Tabelle sein, in der auch die Zugänge (Nachbestellungen) von Teilen erfassbar ist. Oder wie hast Du Dir das gedacht mit dem Füllen des Lagers ? Zugänge werden positiv und Abgänge negativ geführt. In diese Tabelle muss dann auch ein Fremdschlüssel zum Schiff.
Der Bestand ist dann einfach die Summe gruppiert über das Teil.

Ich würde auch auf keinen Falle 2 Lagertabellen führen. Wenn ein Teil zu einem Schiff kommt, ist das auch ein Abgang und steht im Lager nicht mehr zur Verfügung und ist auch nicht mehr im Lagerbestand. Über den Fremdschlüssel zum Schiff, lässt sich dann aber auch ermitteln welches Teil auf welchem Schiff in welchen Mengen ist.
Titel: Re: Datenbankprojekt - Ersatzteilliste [Anfänger]
Beitrag von: Stapi am April 29, 2016, 19:37:43
Hallo
@Klaus deine Aussage ist ja richtig nur das Ersatzteil kann ja in Unterschiedlichen Lagerorten sein somit muss nicht nur die Menge/ Stückzahl sondern auch der Ort an dem es Liegt mitgeführt werden.
Heist doch auch das abbuchungen nicht nur mit -/+ sondern auch mit dem Lagerort erfolgen muss, oder?
Titel: Re: Datenbankprojekt - Ersatzteilliste [Anfänger]
Beitrag von: MzKlMu am April 29, 2016, 19:45:43
Hallo,
@Stefan
ich habe Dich mit dem TE verwechselt. Ich habe das oben noch etwas umformuliert.
Natürlich müsste auch der Lagerort mitgeführt werden, wenn es unterschiedliche Lagerorte gibt. Aber nach seiner Aussage gibt es ja nur ein Lager.
ZitatAm Firmensitz befindet sich ein großes Ersatzteillager für alle Teile,
Somit entfällt die Erfassung des Lagers. Zugänge und Abgänge sollte reichen. Wobei ich annehme, dass ein Teil immer über das Lager zum Schiff kommt, und nie direkt.

@MaggieMay
Zitatsehe ich das richtig, dass die tblErsatzteile lediglich die Ersatzteiltypen enthält,
Woraus schließt Du das ?
Ich sehe in der Tabelle eine Seriennummer und Ersatzteilnummer beides eindeutige Merkmale. Und die Tabelle ist ja gar nicht ganz zu sehen.

@nockenkoenig
Es ist besser, im Beziehungsbild die Tabellen so groß zu ziehen, dass man alle Felder sieht.

Titel: Re: Datenbankprojekt - Ersatzteilliste [Anfänger]
Beitrag von: MaggieMay am April 29, 2016, 23:14:59
@Klaus:
ZitatIch sehe in der Tabelle eine Seriennummer und [...]
Das habe ich wohl auch gesehen und darin einen Widerspruch zu den weiteren Tabellen und den angelegten Verknüpfungen gesehen - daher war meine Frage eher "provokativ" gemeint.
Aber vermutlich habe ich das Beziehungsgeflecht fehlinterpretiert.
Titel: Re: Datenbankprojekt - Ersatzteilliste [Anfänger]
Beitrag von: nockenkoenig am Mai 01, 2016, 17:56:33
Moin,

vielen Dank für die schnellen Antworten, ich versuche das jetzt nochmal nach den Fragen zu beantworten/erklären. Als Anlage liegen die Beziehungen bei, dieses mal in komplett sichtbar.

Als erstes nochmal die genauere Problemstellung. Die Sache ist die:
Die Schiffe existieren schon, sie führen natürlich auch ETs mit sich, hier sind Lagerort und Menge grob bekannt.
Das Lager an Land existiert auch schon, wir haben EINEN Seecontainer voll mit Regalen für BEIDE Schiffe, außerdem stehen noch Anlagen auf dem Hof und in der Halle, des weiteren sind ETs im Büro in Schränken untergebracht.
Was in diesem Container ist weiß niemand. Die Regale sind nach dem Schiff sortiert, untereinander ist aber alles kreuz und quer. Dieses soll aber noch nach den einzelnen Maschinen sortiert werden. Jetzt kann es aber durchaus sein das Aufgrund der Größe, des Gewichts oder Menge des ETs ein Regalbrett nicht ausreicht, folglich ist auch eine Kombination, zum Beispiel Pleuel XYZ mit der ErsTeilenummer: 12-034R, ErsID: 812 liegt auf Regalbrett A1 2mal, auf Regalbrett A2 3mal, auf dem Schiff ist es in Raum 12 1mal vorhanden möglich. Ich habe also ein ET sechs mal an drei Orten gelagert.

@MaggieMay:
Siehe "ErsTeilenummer", diese Liste enthält die ET nach Ersatzteilnummer. Sie sind also eindeutig zuweisbar.

@Stapi:
Ja genau, eine Ein-/ Abbuchung erfolgt nicht nur über die Menge sondern auch über den Ort. So ist es also auch möglich das ich Pleuel 12-034R einmal aus dem Regal A1 an Land nehme, also Ausbuche und dann auf dem Schiff "Marianna" ins Regal D3 einbuche.

@MzKlMu:
Ich brauche beide Mengen der ETs, also an Land und auf dem Schiff.

Zitat von: MzKlMu am April 29, 2016, 19:45:43
Somit entfällt die Erfassung des Lagers. Zugänge und Abgänge sollte reichen. Wobei ich annehme, dass ein Teil immer über das Lager zum Schiff kommt, und nie direkt.

Eben nicht, liegt das Schiff im Hafen und es wird ein ET benötigt um das Lager an Bord aufzufüllen welches NICHT im Lager an Land vorhanden ist soll es mit der Lieferung ans Schiff am entsprechenden Lagerort eingebucht werden. Das Lager an Land wird also übergangen.
Wird ein ET an Bord benötigt welches NICHT im Lager an Land vorhanden ist um sofort benutzt/verbaut zu werden dann wird die Datenbank komplett übergangen, es ist zwar verbaut, steht aber eben nicht als Ersatz zur Verfügung.
Stand es mal als Ersatz zur Verfügung kann es durchaus sein das die Menge in allen Lagern Null ist. Trotzdem führt die tbl_Ersatzteile es noch mit ErsID und allem, so kann bei einer Nachbestellung schneller auf weitere Daten, Zulieferer usw zugegriffen werden.

Also:
Ist die Lösung mit den 2 Tabellen richtig? Die Datenbank soll zukunftsfähig bleiben, es wäre also sinnfrei für jedes Schiff eine Lagertabelle See zu erstellen, oder?
Aber wie kriege ich dann in tbl_SeeLager das entsprechende Schiff mit dem Lagerort zugewiesen?

Ein anderer Ansatz wäre folgender:
Ich entferne tbl_ZugehoerigkeitenErsatzteile und weise die Ersatzteile direkt einem Schiff zu. Der Großteil der ET ist ja genau einem Schiff zuzuweisen. Das würde die Zuweisungen in tbl_SeeLager sofort vereinfachen. Gleichzeitig führt es aber dazu das ich falls etwas für 2 Schiffe vorhanden ist in tbl_Ersatzteile doppelte Einträge auftauchen. Und das will ja niemand. ;-)

Vielen Dank und einen schönen ersten Mai noch.
Titel: Re: Datenbankprojekt - Ersatzteilliste [Anfänger]
Beitrag von: MzKlMu am Mai 01, 2016, 19:05:24
Hallo,
2 Lagertabellen sind definitiv nicht der richtige Weg.
Ich würde zunächst mal eine Tabelle anlegen mit allen Lagern, das kann eine Schiff sein, ein Büro, ein Container oder eine Lagerhallle etc. Diese Tabelle kannst Du Lager nennen. Und noch mal ganz deutlich, auch das Schiff ist dann ein Lager.
Dann brauchst Du eine Tabelle mit allen Lagerplätzen. Unter Lagerplatz verstehe ich z.B. ein Regal mit einer Nr, eine Schublade ganz egal wo dieser Lagerplatz ist. In diese Tabelle muss dann ein Fremdschlüssel zum Lager, sodass Du in der Lage bist, jeden Lagerplatz eindeutig zu erkennen.

Dann benötigst Du eine Tabelle zur Erfassung der Ersatzteile (ET) und der Mengen. In diese Tabelle muss auch ein Fremdschlüssel für die Art der Menge (Tabelle erforderlich, Zugang aus Nachbestellung an Lagerplatz, Abgang an Lagerplatz). Ebenso ein Fremdschlüssel zu ET. Mit Zugang und Abgang erfasst Du auch den Lagerplatz und dieser wiederum hat ein Lager. Du kannst also die ET direkt einem Schiff-Lagerplatz einem Lager-Lagerplatz zuweisen. Sowohl als Zugang (+) als auch als Abgang (-).
Wenn Du in dieser Tabelle die Mengen summierst und über ET und Lager gruppierst hast Du zu jedem Lager (auch Schiff) den Bestand. Ohne Lager den Ges.Bestand.

Ich mach Dir mal ein Grundgerüst.
Titel: Re: Datenbankprojekt - Ersatzteilliste [Anfänger]
Beitrag von: MzKlMu am Mai 01, 2016, 19:55:42
Hallo,
Im Anhang findest Du mal ein Beispiel. Ich habe jetzt aber mal nur die reine Ersatzteillagerung gemacht.
Es gibt noch keine Formulare. Bitte Beziehungen und die beiden Abfragen ansehen.

Das ist völlig flexibel. Da kannst einfach neue Lager und Lagerplätze anfügen. Weitere Schiffe sind ja auch einfach ein weiteres Lager.

PS:
Das Beispiel ist mit Access2003 (MDB) erstellt. Ich habe keine neuere Version. Also bitte nicht nach ACCDB wechseln, wenn Du weiter von mir Hilfe haben willst.

Titel: Re: Datenbankprojekt - Ersatzteilliste [Anfänger]
Beitrag von: nockenkoenig am Mai 04, 2016, 12:19:53
Moin,

ah es ergibt Sinn. Vielen Dank dafür. :-)

Die tbl_ETBewegungen macht also nichts anderes als die ETs mit Menge über die Vorgangsart im Lagerplatz ein oder auszubuchen?

Die Zulieferer füge ich dann wie in meinem Entwurf an die ErsID in tbl_Ersatzteile an. Es ist für den Betrieb hinterher nicht wichtig woher welches Teil in welchen Mengen geliefert wurde, es geht nur darum mögliche Zulieferer Auflisten zu können. Auch Preise spielen keine Rolle.

Kann es zwischen den mdb und accdb nicht zu komplikationen kommen? Ich nutze Office365.

PS: Costa Concordia :-D

Nachtrag: Habe grade versucht bei einer Tabelle in die Entwurfsansicht zu wechseln, Access meckert rum dass das Objekt oder ein verknüpftes Objekt bereits geöffnet ist und lässt mich nur im Schreibgschützten Modus die Ansicht wechseln. Dann lässt sich die Tabelle natürlich nicht mehr bearbeiten. :-(
Titel: Re: Datenbankprojekt - Ersatzteilliste [Anfänger]
Beitrag von: MzKlMu am Mai 04, 2016, 20:01:55
Hallo,
ZitatDie tbl_ETBewegungen macht also nichts anderes als die ETs mit Menge über die Vorgangsart im Lagerplatz ein oder auszubuchen?
ja, so ist es.
Du musst Dir das vorstellen, wie wenn Du das das ET körperlich hin und her trägst.

- ET vom Lieferant holen für Lager > Einbuchung als Zugang im entsprechenden Lager
- ET vom Lieferant holen für Schiff > Einbuchung als Zugang im entsprechenden Lager (Schiff)
- ET vom Lager holen für Schiff > Einbuchung als Ausgang im entsprechenden Lager
und gleichzeitig
- ET zum  Schiff bringen > Einbuchung als Zugang im entsprechenden Lager (Schiff)

Vom Lager zum Schiff ist eine Umlagerung mit 2 Buchungsvorgängen Abgang Lager > Zugang Schiff.

Verbräuche auf dem Schiff müssen nach Rückkehr des Schiffs als Abgang beim entsprechenden Schiff (Lager) ausgebaucht werden.
Und Rücklieferung von ungebrauchten ET vom Schiff zum Lager ist auch eine Umbuchung, nur umgekehrt.
Schiff > Abgang
Lager > Zugang

ZitatKann es zwischen den mdb und accdb nicht zu komplikationen kommen?
Wenn Du bei einer MDB bleibst nicht.

ZitatHabe grade versucht bei einer Tabelle in die Entwurfsansicht zu wechseln,
Es darf kein Objekt geöffnet sein, das auf dieser Tabelle beruht, auch nicht im Entwurf.
Titel: Re: Datenbankprojekt - Ersatzteilliste [Anfänger]
Beitrag von: nockenkoenig am Mai 06, 2016, 14:02:26
Moin,

ich habs hinbekommen, es muss tatsächlich noch etwas geöffnet gewesen sein.

Ok, das ist verständlich. :-)
Warum ist in der tbl_ETBewegungen die Menge als kurzer Text angegeben ud nicht als Zahl?

Der Rest sollte ich jetzt doch über entsprechende Abfragen und Formulare lösen können, ich stelle mir das so vor:

frm_EinbuchenLager mit Unterformular zur Eingabe eines ETs
frm_AusbuchenLager
frm_EinbuchenSchiff mit Unterformular zur Eingabe eines ETs
frm_AusbuchenSchiff
frm_UmbuchenLandSee
frm_UmbuchenSeeLand

vielleicht dazu noch:
frm_ETEingeben um ein ET ohne Mengenangaben eingeben zu können. (Falls einem mal ganz langweilig sein sollte...)

Eine Abfrage qry_Zulieferer kann mir anzeigen welche Teile von wem geliefert werden können, hierzu entsteht dann noch ein Formular um ETs mit Zulieferern verknüpfen zu können.

Ist der Ansatz so richtig?

Vielen Dank :-)

Nachtrag:

Ich habe ein paar andere Abfragen vergessen die ich aber recht schnell realisieren kann. Da wären zB:

qry_ETAufSchiff
qry_ETVonSchiffAnLand
qry_ETVonHersteller
qry_ETVonMaschine

undsoweiter...

Titel: Re: Datenbankprojekt - Ersatzteilliste [Anfänger]
Beitrag von: MzKlMu am Mai 06, 2016, 19:05:17
Hallo,
ZitatWarum ist in der tbl_ETBewegungen die Menge als kurzer Text angegeben ud nicht als Zahl?
weil ich geschludert habe. Das muss natürlich eine Zahl sein. Integer wird wohl reichen.
Zitatfrm_ETEingeben um ein ET ohne Mengenangaben eingeben zu können.
wozu ein extra Formular, die Menge kannst Du auch jetzt schon offen lassen. Es muss keine Menge eigetragen werden. Geht dann zwar nicht in den Bestand ein, was aber auch richtig ist.

Wieso überhaupt die viele Formulare ?
Die Funktionen o.g. 6 Formulare kannst Du alles mit einem Formular (mit Unterformular) realisieren.

Der Rest scheint mir erst mal richtig.
Titel: Re: Datenbankprojekt - Ersatzteilliste [Anfänger]
Beitrag von: nockenkoenig am Mai 10, 2016, 12:14:17
Moin,

jetzt sind mir noch ein paar Dinge eingefallen:

Die tbl_ETBeweungen erhält ja pro Bewegung einen Eintrag, wächst also Ständig, sehe ich das richtig? Läuft die nicht irgendwann "über"? Und wenn ja was kann man dagegen tun?

Wie kann ich für die Ersatzteile eine Mindestanzahl realisieren? Am einfachsten wäre ja ein weiteres Feld in tbl_Ersatzteile der die von mir vorgegebene Mindestanzahl erhält, oder? Diese Zahl bezieht sich dann auf die in tbl_Lager angegeben Schiffe. Wieviele Ersatzteile ich an Land vorrätig habe ist eher zweitrangig.

Des Weiteren sollten ja noch Zulieferer zugewiesen werden können, mir kam die Idee das ganze gleich zu einer einfachen Inventarliste auszubauen:

tbl_Inventar definiert sich über die Seriennummer und das Baujahr, man könnte noch weitere Daten vom Typenschild der Maschine hinzufügen, also zum Beispiel Leistung, elektrische Leistung oder Pumprate.

tbl_Anlage beschreibt um was es sich handelt, also zum Beispiel "Feuerlöschpumpe" oder "Hauptmaschine"

tbl_Firmen speichert Hersteller und/oder Zulieferer mit Adresse, weitere Personen können über tbl_Ansprechpartner hinzugefügt werden.

tbl_Firmenfunktion sagt nur aus ob es sich dabei um einen Zulieferer, den Hersteller oder beides handelt.