Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Schnabelameise am März 18, 2011, 22:16:10

Titel: Setbildung in Access
Beitrag von: Schnabelameise am März 18, 2011, 22:16:10
Hallo,

ich stehe vor dem Problem, unter access 2003 eine Setbildung zu realisieren. Folgende Aufgabe:

verschiedene Teile sollen in der Datenbank zu einem Set zusammengefasst werden. Die Art der Gegenstände im einzelnen Set variiert allerdings ebenso, wie die Liefermengen der Hersteller. Beispiel
Reparaturset 1 = Schraube, Unterlegscheibe, Dichtung und Adapter
Reparaturset 2 = 2x Schraube, 2x Unterlegscheibe, 2x Mutter

usw.

wie kann ich auf einen Blick darstellen, welche Anzahl Set´s (vielleicht auch einzelne Restmengenanzeige) ich noch zusammenstellen kann?  Is ziehmlich schwer zu formulieren.

Datenbank mit Lieferanten und Artikelbezeichnung war kein Problem, da jeder Artikel intern ja eine Produktnummer hat.


über tipps, anregungen oder fertige Lösungen würde ich mich freuen.

Vielen Dank schonmal
Titel: Re: Setbildung in Access
Beitrag von: MzKlMu am März 18, 2011, 23:33:05
Hallo,
Du brauchst eine Tabelle für die Sets und noch eine weitere Tabelle für die Setzusammenstellung.
In dieser Tabelle wird die ID des Sets, die ID des Artikels und die Menge gespeichert.
Du kannst so beliebig viele Sets mit beliebig vielen Artikeln kombinieren.
Titel: Re: Setbildung in Access
Beitrag von: Schnabelameise am März 19, 2011, 17:59:42
Zitat von: MzKlMu am März 18, 2011, 23:33:05
Hallo,
Du brauchst eine Tabelle für die Sets und noch eine weitere Tabelle für die Setzusammenstellung.
In dieser Tabelle wird die ID des Sets, die ID des Artikels und die Menge gespeichert.
Du kannst so beliebig viele Sets mit beliebig vielen Artikeln kombinieren.


und die sachen, die ich für das set brauche, werden automatisch vom gesamtbestand abgezogen?.....wie realisiere ich das? denn im Prinzip würde mir eine Übersicht der vorhandenen Set´s reichen und eine Restmengen anzeige, um zu sehen, welche Artikel neu Bestellt werden müssen.

ich sag ja, is nich so einfach zu beschreiben
Titel: Re: Setbildung in Access
Beitrag von: MzKlMu am März 19, 2011, 18:16:41
Hallo,
in einer Tabelle einen Bestand zu führen ist auch bereits der falsche Ansatz. Du kannst in einer Tabelle die Zugangsmengen führen (z.B. bei einem Nachkauf/Nachproduzierung). In der Settabelle die Abbgangsmengen.
Summe(Zugang) - Summe(Abgang) = Bestand. Die Summen müssen natürlich Artikelbezogen ermittelt werden. In einer Datenbank werden keine Bestände geführt, sondern nur mengen für Zu und Abgang. Dann ergibt sich automatisch stets der aktuelle Bestand.
Titel: Re: Setbildung in Access
Beitrag von: Schnabelameise am März 19, 2011, 18:19:08
Zitat von: MzKlMu am März 19, 2011, 18:16:41
Hallo,
in einer Tabelle einen Bestand zu führen ist auch bereits der falsche Ansatz. Du kannst in einer Tabelle die Zugangsmengen führen (z.B. bei einem Nachkauf/Nachproduzierung). In der Settabelle die Abbgangsmengen.
Summe(Zugang) - Summe(Abgang) = Bestand. Die Summen müssen natürlich Artikelbezogen ermittelt werden. In einer Datenbank werden keine Bestände geführt, sondern nur mengen für Zu und Abgang. Dann ergibt sich automatisch stets der aktuelle Bestand.


genau da habe ich das Problem.....der Abgang hat noch nicht stattgefunden....ich muss die Anzahl der Set´s vorher wissen
Titel: Re: Setbildung in Access
Beitrag von: MzKlMu am März 19, 2011, 18:30:09
Hallo,
Zitat....ich muss die Anzahl der Set´s vorher wissen
wieso, versteh ich nicht, sobald Du für einen Artikel eine Menge eingibst, hat doch der Abgang stattgefunden. Diese Menge muss ggf. noch mit der Anzahl der Sets multipliziert werden. Was musst Du dazu vorher wissen?
Titel: Re: Setbildung in Access
Beitrag von: Wurliwurm am März 20, 2011, 21:18:01
Hi,

also wenn ich dir geforderte Lösung durch den Kopf gehen lass, ist das nicht ganz trivial.

Dazu eine ganz ganz wichtige Frage am Anfang: Wird diese Lösung im Mehrbenutzerbetrieb verwendet? Das ist deshalb entscheidend, weil diese Berechnung im mehreren Schritten abgearbeitet werden muß und es nicht sein darf, daß Benutzer halbe Buchungen (sog. "dirty read") sehen.

Ein Lehrbuchbeispiel ist die Kinokasse, wo zum Zeitpunkt t noch drei Plätze frei sind und zwei Mitarbeiter an zwei Kinokassen schauen gleichzeitig nach, ob noch zwei Plätze frei sind und bekommen die Antwort "Ja". Wenn dann beide auf speichern drücken, gibt es Probleme, die ggfalls erst im Kinosaal entdeckt werden.

Es gibt dazu in echten Datenbanksystemen Lösungen, aber Access ist systembedingt für solche Probleme nicht gewappnet. Es gibt auch kaum Workarounds. Dazu braucht es ein Client-Server-Datenbanksystem.

Der Algorithmus, welche Sets aus dem momentanen Lagerbestand zusammengestellt werde kann, ist nicht trivial. Ich bin mir nicht sicher, ob man dazu Backtracking machen muß oder einen Simplex-Algorithmus, vielleicht sehe ich das alles ein bißchen zu komplex. Wenn Du nur wissen willst, ob ein bestimmtes Set zusammengestellt werden kann (oder ein Vielfaches eines Sets), dann ist das relativ einfach. Herauszufinden, welche Sets in welchen Mengen hergestellt werden können, ist heftig.

Ich möchte auch sagen, daß es sehr wohl sinnvoll sein kann, eine extra Bestandstabelle zu führen, in professionellen Systemen ist das normal. Kein Benutzer einer Lagerverwaltung wird darauf warten, daß das System alle Einzelbuchungen aufaddiert (inbesondere weil u.U. in der Zwischenzeit schon wieder neu darauf gebucht wird).

Jedenfalls ist die Speicherung der Sets einfach, das wurde ja schon beschrieben. Zum Berechnen mußt Du die Lagerbestände in eine geeignete Datenstruktur einlesen. Anschließend den Algorithmus durchlaufen. Mit einer SQL-Abfrage allein geht das gar nicht, dazu mußt Du ziemlich viel Code schreiben.