Hallo zusammen
Ich würde gerne meine Excelverwaltung in Access durchführen und stosse auf folgendes Problem:
Die Exceltabelle sieht so aus:
Artikel : Lieferant : Hersteller : Details_zu_dieser_Kombination
Das heisst ich kaufe einen Artikel bei einem gewissen Lieferant. Dabei ist es mir wichtig zu wissen, wo der wiederum den Artikel her hat. Für diese Kombination aus Artikel_Lief_Herst gibt es dann noch Details.
Für Lieferanten und Hersteller gibt es ebenfalls noch zusätzliche angaben, die für beide gleich sind. Also es wird bei beiden nach gewissen Zertifikaten gefragt:
Lieferant oder Hersteller : Zertifikat 1 : Zertifikat 2
Für Access habe ich diese Exceltabelle in Artikel und Lieferanten gesplittet. Die Lieferantentabelle sind einfach Adressen, also habe ich die Hersteller auch da rein gepackt, dazu diese Zertifikate.
Für die m:n-Beziehung wollte ich eine Zwischentabelle machen.
Das sieht jetzt so aus:
tbl_Artikel
tbl_Lieferanten_Hersteller_Zertifikate
tbl_Art_Lief_Hersteller
Das Problem ist jetzt, dass ies irgendwie nicht klappt, dass ich je eine Beziehung mit ref. Integrität zwischen einmal tbl_art_Lief_hst und tbl_lief_hst für den ieferanten und dasselbe für den Hersteller einrichten kann. Muss ich die Lieferantetabelle tatsächlich in lieferanten und Hersteller splitten?
Danke sehr für die Hilfe
Daniel
HAllo,
--als einfachste Lösung wäre eine Aufteilung in zwei Tabellen zu sehen, insbesondere dann, wenn sich unterschiedliche Attribute (Tabellenfelder) für Herst. und Liefer. ergeben würden.
--Bei einer Tabelle "tblAdressen" müßte ein Unterscheidungsmerkmal (z. B. ein Feld mit 1==Hersteller, 2== Lieferant ( 3==Hersteller UND Lieferant) ) mitgeführt und bei jeder Aktion damit unterschieden werden, um welchen "Adresstyp" es sich gerade handelt.
Die weitergehende Frage dazu stellt sich, ob ein Hersteller auch ein Lieferant sein kann. Dann käme eher die zweite Lösung in Frage
Danke für die Antwort. Es ist in der Tat so, dass Hersteller auch Lieferanten sein können. Und das mit der Extraspalte mit 1,2 oder 3 für lief, hst oder beides ist mir auch schon in denn Sinn gekommen.
Wie verbinde ich aber das ganze, das verstehe ich nicht.
Gruss
Daniel
Weiss hier jemand weiter?
Hallo,
wobei weiter wissen?
Welche Tabellen (Name, (Schlüssel)Felder, Datentypen) hast Du bis jetzt erzeugt?
halli hallo,
freut mich, dass du dich meiner annimmst. schau mal das bild an bitte. die beziehungen sind jedoch eben falsch...
bei der tabelle hersteller habe ich den typ definert hersteller, lieferant oder herst=lieferant...
lg
[Anhang gelöscht durch Administrator]
HAllo,
ja, die 1:1-Beziehungen sind falsch. Lieferanten und Lieferantendetails müssen in 1:n-Bezeihung stehen, dito für das Material
Hallo, danke für die antwort. Bei den lieferantendetails gibt es aber tatsächlich pro lieferanten genau einen satz mit details. Die hät ich nicht trennen müssen.
Das Problem ist immer noch, dass ich die Verknüpfumg q-info mit den lieferanten/herstellern-tabelle nicht schaffe. Wie muss ich es einrichten? Die lieferanten enthält jetzt eine spalte mit l=lieferant, h=hersteller und lh=hersteller ist gleich lieferant pro eintrag. Im q-info hat es je eine spalte für lieferant und für hersteller, die sind zwingend. Was muss ich da mit der l h umd lh aus der adresstabelle einrichten.
Gruss fast vom hochrhein
Hallo,
füge ein Feld 'Zert_FK' [Zahl, LongInteger] in die Tabelle Lieferanten ein, wenn 100%-ig feststeht, dass es NIEMALS mehr als einen einzigen Datensatz Details pro Lieferant wird geben können.
Erzeuge dananch eine Tabelle 'tblZert' mit den Feldern 'Zert_ID' Primärschlüssel [AutoWert] und 'ZertBezeichnung' [Text] Ich nehme an, dass in den Feldern der Tabelle Lieferantendetails keine Einträge stehen sondern diese Felder Ja/Nein - Felder sind.
Lege dann in der 'tblZert' Datensätze an, die in in 'ZertBezeichnung' als Text die Feldnamen der Tabelle 'Lieferantendetails' enthalten.
Dann erzeugst du eine Tabelle 'tblLiefZert' mit den Feldern LZ_ID, Primärschlüssel [AutoWert], Lieferant_FK [Zahl, LongInteger] und Zert_FK [Zahl, LongInteger]
und setze diese über 'Zert_ID' und 'Zert_FK' mit der Tabelle 'tblZert' 1:n in Beziehung sowie über die Felder 'SAP_vendor' (wenn dies der Primärschlüssel der Lieferanten ist) und 'Lieferant_FK'
ebenfalls 1:n in Beziehung.
Diese Zwischentabelle bekommt nun
für jedes Zertifikat, das ein Lieferant/Hersteller inne hat
einen Datensatz
mit dem Fremdschlüssel des Zertifikats und dem Fremdschlüssel des Lieferanten eingetragen.
ZitatIm q-info hat es je eine spalte für lieferant und für hersteller, die sind zwingend
...Hmmmm... das halte ich für ein kühnes Gerücht ;) :D
Erzeuge eine Tabelle 'tblLiefHst' mit den Feldern 'LH_ID' Primärschlüssel [Autowert] und 'LH_Art' [Text].
In der Tabelle q-info erzeugst du ein Feld 'LH_FK' [Zahl, LongInteger] und setzt dieses mit 'LH_ID' der tblLiefHst 1:n (mit ref. Integrität) in Beziehung.
Die Felder Lieferant und Hersteller entfernst du aus der Tabelle q-info, an deren Stelle tritt ja nun das Feld 'LH_FK' (FK steht hierbei für ForeignKey).
ZitatDie lieferanten enthält jetzt eine spalte mit l=lieferant, h=hersteller und lh=hersteller ist gleich lieferant pro eintrag
Diese Felder läßt du aus dieser Tabelle verschwinden, die werden da nicht benötigt.
Die Tabelle 'tblLiefHst' versorsgt du mit den Einträgen 'Lieferant', 'Hersteller' sowie 'Lieferant und Hersteller'.
Die passenden Fremdschlüssel überträgst du dann anschließend für die bereits bestehenden Datensätze der Tabelle q-info.
Aus dem Beziehungsdiagramm entfernst du dann anschließend die Aliastabelle (Lieferant_1) - die wird nicht mehr benötigt.
Weiter kann ich dir nur wärmstens ans Herz legen deine Feldbezeichnungen abzuändern!
KEINE LEERZEICHEN, UMLAUTE und/ODER RESERVIERTE WÖRTER in FELD-, TABELLEN- und OBJEKTBEZEICHNUNGEN!
HTH
Irgendwie begreife ich es noch nicht. Mhh..soll es so sein?
Die neue Zwischentabelle tblLiefHerst enthält LH_ID und LH_Art. Heisst das, dass ich also einen Kombinationsdatensatz mit Lieferant und Hersteller erzeugen soll. Also LH_1, Lieferant A, Hersteller C. Diesen kann ich dann als LH_FK dem q_info zuordnen? Es kann ja durchaus sein, dass mehrere Artikel die gleiche Kombi haben.
Ich verstehe abe nicht, wie die tblLiefHerst mit der tblLieferanten (also alle Firmen zusammen) verknüpft sein soll. Mir scheints, dass ich dann wieder am Punkt bin, dass die tblLiefHerst wieder zwei Einträge aus einer Tabelle, der tblLieferanten, hat.
Gruss
Daniel
Hallo,
HTH ist kein Name ... ;) ;D ::)
sieh mal da den letzten Eintrag an ...
http://www.access-o-mania.de/index.php?ind=community&op=akronyme&letter=h (http://www.access-o-mania.de/index.php?ind=community&op=akronyme&letter=h)
*grins*
Zitat von: database am Oktober 25, 2011, 15:55:21
Hallo,
HTH ist kein Name ... ;) ;D ::)
sieh mal da den letzten Eintrag an ...
http://www.access-o-mania.de/index.php?ind=community&op=akronyme&letter=h (http://www.access-o-mania.de/index.php?ind=community&op=akronyme&letter=h)
*grins*
Ahhh hihi, danke sehr. Naja hab oben den Kommentar angepasst, weil es not yet really helped but I'm getting closer to it :-)
Würde es dir etwas ausmachen, das vielleicht an einem Exempel zu statuieren?
Gruss
Hallo,
lade mal deine bisherige DB hier KOMPRIMIERT / REPARIERT und GEZIPT hoch
ich baue dir die Tabellen ein
Zitat von: database am Oktober 26, 2011, 08:38:06
Hallo,
lade mal deine bisherige DB hier KOMPRIMIERT / REPARIERT und GEZIPT hoch
ich baue dir die Tabellen ein
Sehr nett..habe dir eine PM geschickt
Hallo,
ich habe deine Datei überarbeitet und hänge nun hier das aktuelle Tabellendiagramm rein.
Die geänderte DB sende ich dir zu.
Mir bleiben aber noch Zweifel in Bezug auf die Felder 'AuditAm' und 'AuditberichtNr' welche sich in der Tabelle 'tblMaterialdetails' befinden.
M.E. haben diese Felder dort gar nix verloren sondern sollten doch eher mit dem auditierten Unternehmen in Verbindung stehen.
Dies angesprochenen Spalten befinden sich derzeit noch in der tblMaterialdetails - nähere Infos dazu wären nett ;D
Andererseits war die Schwierigkeit jene, die aus Excel übernommenen Tabellen so zu berichtigen, dass sie in Access verwendbar sind.
Zu dem Zweck wurden div. Felder neu erstellt, Schlüsseldaten per Aktualisierungsabfragen an die richtigen Stellen verfrachtet, Beziehungen neu eingestellt,
Feldnamen und Tabellenbezeichnungen auf ordentlichen Standard gebracht und fehlende Tabellen ergänzt. Dadurch, dass sich die Beschreibungen
und die aktuelle Tabellensituation nicht ganz gedeckt haben, war mein Vorschlag in #8 nicht 1:1 umsetzbar.
Ich musste mich an Gegebenheiten angeglichen durch die Tabellen kämpfen...
Die Informationen zu den erlangten Zertifikaten wären allerdings noch in der DB nachzutragen.
Wobei zu bemerken ist, dass sehr wohl Unternehmen existieren, die mehr als ein Zertifikat besitzen und somit die
Anzahl der zu erwartenden Datensätze höher ist, als die ursprünglich angenommene Anzahl (max. einer pro Lieferant ;))
Ich fürchte aber dennoch, dass die tblMaterialdetails noch nicht den Normalisierungsgrad aufweist, den sie besitzen sollte.
Leider fehlen da eben die entsprechenden Hintergrundinfos (Szenarien und Funktionsbeschreibung der Gesamtlösung)
p.s. DB ist am Weg....
HTH
[Anhang gelöscht durch Administrator]
hallo meister
sieht toll aus, danke sehr. habe eben versucht eine kleine abfrage zu erstellen,
die zu jedem material den lieferanten und den hersteller liefert. bin bereits gescheitert.
es spuckt ca 12 einträge, statt der 50 aus...abfragen resp. die ganze verwaltung oder sogar das konzept
der daten habe ich wohl auch nicht im griff...
guck bild bitte, was stimmt denn hier nicht. :
lg
[Anhang gelöscht durch Administrator]
ich brings nicht fertig einen report zu erstellen, der das material mit seinem lieferanten und seinem hersteller ausgibt. muss man da wieder tricks anwenden?
Hallo, versuch mal folgende SQL in eine neue Abfrage einzufügen:
SELECT tblMaterial.Mat_ID, tblMaterial.Material, tblLieferanten.LiefName AS Lieferant, tblLieferanten_1.LiefName AS Hersteller
FROM tblLieferanten
INNER JOIN (tblLieferanten AS tblLieferanten_1
INNER JOIN (tblMaterial INNER JOIN tblQ_Info_Material ON tblMaterial.Mat_ID = tblQ_Info_Material.Material_FK)
ON tblLieferanten_1.Lieferant_ID = tblQ_Info_Material.Hst_FK)
ON tblLieferanten.Lieferant_ID = tblQ_Info_Material.Lief_FK;
Die Abfrage sollte eigentlich alle Materialien anzeigen bei denen Lieferant UND Hersteller bekannt sind.
Wogenen die folgende Abfrage alle Datensätze der Tabelle tbl_QInfo_Material liefert, unabhängig davon ob Lieferanten UND Hersteller (also beide pro Material) bekannt sind
SELECT tblMaterial.Mat_ID, tblMaterial.Material, tblLieferanten.LiefName AS Lieferant, tblLieferanten_1.LiefName AS Hersteller
FROM tblLieferanten
RIGHT JOIN (tblLieferanten AS tblLieferanten_1
RIGHT JOIN (tblMaterial INNER JOIN tblQ_Info_Material ON tblMaterial.Mat_ID = tblQ_Info_Material.Material_FK)
ON tblLieferanten_1.Lieferant_ID = tblQ_Info_Material.Hst_FK)
ON tblLieferanten.Lieferant_ID = tblQ_Info_Material.Lief_FK;
Die gelieferte Anzahl von 97 Datensätzen entstammt der tbl_QInfo_Material da es dort unterschiedliche Lieferanten und Hersteller für ein und das selbe Material gibt
;)