Artikelsuche in Stücklisten

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

flo.sonneborn
Beiträge: 8
Registriert: Fr, 08.08.2014 12:25

Artikelsuche in Stücklisten

Beitrag von flo.sonneborn »

Hallo zusammen,

ich habe eine komplexe Aufgabe zu lösen und bin auf der Suche nach der richtigen Software.

Ich bekomme Daten in folgendem Format angeliefert (als MS Excel Tabelle):

Code: Alles auswählen

Artikel 1
-Untergruppe1
--Untergruppenartikel1
--Untergruppenartikel2
-Untergruppe2
Artikel2
-Untergruppe1
-Untergruppe2
.
.
.
Jeder Artikel kann eine andere Struktur haben.

Meine Aufgabe besteht nun darin, es zu ermöglichen mehrere Untergruppen/Untergruppenartikel in einer Stückliste zu suchen.

Beispiel:

Code: Alles auswählen

Teil 1:
- Brett mit Nagel und Schraube (Hauptartikel)
-- Brett (Untergruppenartikel1)
-- Nägel (Untergruppenartikel2)
-- Schraube (Untergruppenartikel2)

Teil 2:
- Schraube mit Mutter (Hauptartikel)
-- Schraube
-- Mutter

Teil 3:
- Brett mit Loch und Nagel
-- Brett
-- Loch
-- Nagel

Teil 4:
- Brett mit Riss
-- Brett
-- Riss
Wenn ich nun also alle Artikel sehen möchte, die ein Brett und einen Nagel enthalten, sollten Artikel 1 und 3 angezeigt werden.

Kann ich das Ganze theoretisch mit Base lösen oder sollte ich mich da eher in Richtung PHP/MySQL bewegen?

Danke für eure Meinung!
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Artikelsuche in Stücklisten

Beitrag von F3K Total »

Hi,
flo.sonneborn hat geschrieben:Kann ich das Ganze theoretisch mit Base lösen oder sollte ich mich da eher in Richtung PHP/MySQL bewegen?
Das ist keine Frage des Frontends oder der verwendeten Datenbank, sondern eher eine Frage der Datenstruktur. In einer relationalen Datenbank, HSQL (Base) und MySql, arbeitet man mit Tabellen und Fremdschlüsseln, also z.B. eine Tabelle Artikel, eine Tabelle Artikel_Untergruppen, eine Tabelle Untergruppen_Untergruppenartikel und eine Tabelle Untergruppenartikel.
Wobei ein Artikel quasi genau "weiss" (über Fremdschlüssel) welche Untergruppen zu ihm gehören, während eine Untergruppe wieder weiß, welche Untergruppelartikel zu ihr gehören.
Je nach Verschachtelungstiefe braucht man dann mehr oder weniger Tabellen. Um das zu verstehen, solltest du dich mit http://de.wikipedia.org/wiki/Relationale_Datenbank beschäftigen.
Deine Excel-Tabelle ist alles andere als in dieser Struktur. Das Hauptproblem ist also, wie du die Daten aus einer Tabelle, sinnvoll verknüpft, in mehrere Tabellen überführen kannst. Hast du das, dann kannst du alle Einzelteile und Kombinationen finden, die du suchst.
Besser wäre wahrlich, wenn du an die ursprüngliche Datenbank, aus der die Daten sicherlich kommen, herankommen würdest.
Kurz und gut, die Excel-Tabelle ist für diesen Fall Bullshit.
Gruß R
flo.sonneborn
Beiträge: 8
Registriert: Fr, 08.08.2014 12:25

Re: Artikelsuche in Stücklisten

Beitrag von flo.sonneborn »

Hi,

ok, soweit verstanden. An die DB komme ich nicht ran. Folglich müsste ich versuchen über VBA die Tabelle so zu formatieren, dass ich einzelne Tabellen bekomme, welche ich dann in Relationen setzen kann...

Das wird spannend...

Danke für die Antwort.
WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Re: Artikelsuche in Stücklisten

Beitrag von WSO »

Hallo Flo,
Die Stücklisttenauflösung ist ein Klassiker aus der Wirtschaftsinformatik. Das Netz ist voll davon mit Beispielen.
Z.B. hier: http://www.herber.de/forum/archiv/1212t ... esung.html

Um eine Stückliste abzubilden braucht du zwei Tabellen:
1. Artikel: Artikelnummer(ID), Bezeichnung, ...
2. Stückliste: ID, Artikelnummer_Kopf, Artikelnummer_Komponente, Menge
Die beiden Artikelnummern sollen indiziert sein.

Von Artikel(Artikelnummer) legst du auf Stückliste(Artikelnummer_Kopf) eine 1:n Beziehung an.
Mittels einer rekursiven Schleife über "Artikelnummer_Kopf" kannst du dann die Stückliste Mehrstufig auflösen und nach deinen Komponententeil suchen..
Gleiche Methode über "Artikelnummer_Komponente" lifert dir einen mehrstufigen Teileverwendungsnachweis, meint: in welche Baugruppen/Endprodukte geht ein bestiummtes Teil ein.

Achtung: Bei Fehlern in der Stücklistenstruktur (wenn z.B. "Artikel-1" wiederum "Artikel-1" direkt oder indirekt enthält läuft dein Proramm in eine Endlosschleife. Einfachste Möglichkeit das zu verhindern, ist eine maximale Anzahl der Strukturstufen festzulegen. Ist die Anzahl der druchlaufenen Auflösungen größer als das Maximum kannst du die Verarbeitung mit Fehlermaldung abbrechen.
Hoffe, das hilft dir etwas weiter.
Gruss,
WSO
flo.sonneborn
Beiträge: 8
Registriert: Fr, 08.08.2014 12:25

Re: Artikelsuche in Stücklisten

Beitrag von flo.sonneborn »

Hej WSO,

danke für deinen Beitrag.

Den Ansatz habe ich eben auch schon verfolgt.

Nun habe ich folgendes Problem:

Die mir vorliegenden Daten sehen nach einer 1. Bereinigung aus wie im Anhang 1:
UG.xlsb
Anhang 1
(21.6 KiB) 164-mal heruntergeladen
Die benötigten Daten sollten aber wie in Anhang 2 ausehen:
UG2.xlsb
Anhang 2
(9.23 KiB) 173-mal heruntergeladen
Eine Idee, wie ich das bei 85.000 Zeilen zügig erledigen kann?

Danke und Gruß!
flo.sonneborn
Beiträge: 8
Registriert: Fr, 08.08.2014 12:25

Re: Artikelsuche in Stücklisten

Beitrag von flo.sonneborn »

Hallo,

habe es mit ein paar einfachen Mitteln und einem kleinen Makro bereits selber hinbekommen.

Danke erstmal! Werde mich sicherlich morgen nochmal mit weiteren Fargen melden..
flo.sonneborn
Beiträge: 8
Registriert: Fr, 08.08.2014 12:25

Re: Artikelsuche in Stücklisten

Beitrag von flo.sonneborn »

Hallo zusammen,

habe jetzt die 3 Tabellen, verstehe aber noch nicht so richtig, wie ich das Ganze in Relation setzen kann.

Folgende Fragen tun sich mir auf:

1. Tabellen
Die Tabelle 3 (ID| Art. Nr. Baugruppe | Art. Nr. Einzelteile | Menge) ist ja ganz nett, aber eigentlich sollte Sie doch wie folgt aufgebaut sein:

ID | ID Baugruppe | ID Einzelteil | Menge

Gibt es eine Möglichkeit diese Tabelle 3 automatisch zu generieren?

2. Abfragen
Wie genau kann ich denn die Abfrage in der Entwurfsansicht erstellen? Da ich ja nach mehreren Einzelteilen in der Stückliste suche und mir die Artikelnummer der Baugruppe angezeigt werden soll befürchte ich, dass ich das mit den 3 Tabellen gar nicht hinbekomme...

Ich bin dankbar für jeden Denkanstoß. Momentan komm ich nicht weiter...
WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Re: Artikelsuche in Stücklisten

Beitrag von WSO »

Leg doch erst mal die benötigte Datenbank mit den Tabellen Artikelstamm und Stückliste(deine Tabelle 3) an.
Wozu du eine dritte Tabellen haben willst ist mir nicht verständlich.

Wenn du deine spreatsheets entsprechend der Tabellenstruktur anpasst, kannst du diese ganz einfach in die Datenbank übernehmen:
Die Tabelle in Excel oder Calc markieren, - kopieren.
In Base-Datei wechseln, dort in den Bereich "Tabellen" gehen, Bearbeiten - Einfügen. Es öffnet sich ein Assistent, der dir dann weiterhilft.
Speziell hierzu gibt es ein Vidiotutorial:
viewtopic.php?f=27&t=54234

Vielleicht schaust du dir das für Einsteiger wirklich gute Base-Handbuch mal intensiv an, hilft sehr beim Einstieg in das Thema:
http://de.libreoffice.org/hilfe-kontakt/handbuecher/

Gruss,
WSO
flo.sonneborn
Beiträge: 8
Registriert: Fr, 08.08.2014 12:25

Re: Artikelsuche in Stücklisten

Beitrag von flo.sonneborn »

Guten Morgen WSO,

habe nun die beiden Tabellen eingefügt und mich bereits mit ein paar einfachen Abfragen beschäftigt. Das klappt soweit ganz gut.

mit der Abfrage:

Code: Alles auswählen

SELECT "Stufe 1", "Artikel" FROM "Baugruppen" WHERE "Stufe 1" IN ( 'suchbegriff1', 'suchbegriff2' )
Erreiche ich auch die Anzeige der Baugruppen die ich suche.

Allerdings werden dann auch die Artikel angezeigt, die nur einen der Suchbegriffe enthalten.

Es sollten aber nur die angezeigt werden, welche BEIDE Artikel enthalten...

Wie könnte ich das lösen?
flo.sonneborn
Beiträge: 8
Registriert: Fr, 08.08.2014 12:25

Re: Artikelsuche in Stücklisten

Beitrag von flo.sonneborn »

Eine Idee die mir gerade kam:

die ausgegebene Tabelle aus der Abfrage:

Code: Alles auswählen

SELECT "Stufe 1", "Artikel" FROM "Baugruppen" WHERE "Stufe 1" IN ( 'suchbegriff1', 'suchbegriff2' )
müsste wie folgt gefiltert werden:

Alle Baugruppenartikelnummern, welche nur 1x vorhanden sind --> ausblenden
Alle Baugruppenartikelnummern, welche > "anzahl der Suchbegriffe" -1 vorhanden sind --> anzeigen

Vermutlich gibt es elegantere Lösungen. Bin für jeden Ansatz dankbar.
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Artikelsuche in Stücklisten

Beitrag von F3K Total »

Ein Schuss ins Blaue,
eine Beispieldatei wäre hilfreich.

Code: Alles auswählen

SELECT "Stufe 1", "Artikel" FROM "Baugruppen" WHERE "Stufe 1" = 'suchbegriff1' AND  "Stufe 1" = 'suchbegriff2'
Gruß R
WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Re: Artikelsuche in Stücklisten

Beitrag von WSO »

bin mir nicht ganz sicher was du meinst.
Wenn du nur nach den Artikeln suchst, die mehrfach verwendet werden, kannst du die eine zweite Abfrage bauen, die die Anzahl des Vorkommens eines Artikels ermittelt (SQL: COUNT), im Abrageeditor: Fuktion --> Anzahl.
Darüber kannst du dann beliebig filtern.
Gruss,
WSO
flo.sonneborn
Beiträge: 8
Registriert: Fr, 08.08.2014 12:25

Re: Artikelsuche in Stücklisten

Beitrag von flo.sonneborn »

Hey,

ich hab's mit der folgenden Abfrage hinbekommen:

Code: Alles auswählen

SELECT "Artikel" FROM "Baugruppen" WHERE "Stufe 1" IN ( 'ZS00100', 'FS00202', 'G300306', 'ZL00100' ) GROUP BY "Artikel" HAVING COUNT("Artikel")=4
Jetzt muss ich das Ganze nur noch schön verpacken...

Danke für die Hilfestellungen.
Antworten