Hallo Leute!
Möchte in Access eine kleine Bestelldatenbank erstellen. Zur Info es gibt:
-verschiedene Lieferanten
-Bestellungen
-verschiedene Artikel (es gibt keine Artikelnummern, da es sich hierbei um Nebenbestellungen geht wie z.B. Klebeband)
-jeder Artikel gehört einer bestimmten Artikelgruppe an
-jeder Artikel hat einen Bestimmten Preis
Meine Tabellen bisher sind:
-Lieferanten
-Bestellung
-Artikel
-Artikelgruppe
-Preise
Ich habe versucht in jede Tabelle einen Key zu setzten der einen Autowert erzeugt. Beim Beziehungen erstellen kam
schon die erste Fehlermeldung: Bei Beziehungen sind die selben Datentypen erforderlich. ??? Habe die Fremdkeys nicht
auf Autowert gesetzt war das der Fehler? Vllt liegt es aber auch an meinem Datenmodell....
Würde mich freuen wenn mir jemand helfen kann und vllt auch einen Tipp zum Datenmodell geben könnte.
Danke im Vorraus und schönen Fußballabend ;)
Gruß kai
Hallo,
Na, wenn die Meldung schon sagt, dass die selben Datentypen (der beteiligten Felder) erforderlich sind, was ist dadran unklar?
Die Fremdkeys dürfen auch nicht auf Autowert stehen, sondern auf Zahl,Long Integer, wenn der entspr. Primärschlüssel ein Autowert ist.
-Lieferanten ok, weil verschiedene Lieferanten
-Bestellung ok, weil mehrere Bestellungen, wobei aber hier eher zwei Tabellen sinnvoll wären : "Bestellung" und "Bestellpositionen"
-Artikel ok, weil mehrere Artikel. Die Einführung einer "ArtikelNummer" (kann ja ein Autowertfeld sein) ist zwingend nötig(vorteilhaft)
-Artikelgruppe(n) ok, weil mehrere Artikelgruppen
-Preise nicht ok, dafür ist (nach Deiner Beschreibung) keine eigene Tabelle nötig. In "Artikel" muß es ein Feld "Preis" geben.
Morgen :-)
Vielen Danke für die schnelle Antwort!
Jeder meiner Keys sind nun Autowerte, außer die Fremdkeys, die sind nun Zahlen :-)
Habe mal das Datenmodell erstellt und mit angefügt. Vllt kann mir jemand sagen ob es
so funktioniert oder halt auch nicht.
Danke
Schöne grüße
[Anhang gelöscht durch Administrator]
Hallo,
ist schon auf dem richtgen Weg...
Trotzdem:
--Wird pro Bestellung immer nur ein Artikel bestellt?
Wenn mehrere Artikel auf eine Bestellung kommen sollen, ist eine "Detailtabelle" für die Bestellungen erforderlich (->
Zitat"wobei aber hier eher zwei Tabellen sinnvoll wären : "Bestellung" und "Bestellpositionen"
)
--Welche Bedeutung hat der "Preis" eines Artikels? Ist das der Bestellpreis eines gewissen Lieferanten oder ein Verkaufspreis?
--kann ein bestimmter Artikel bei mehreren Lieferanten mit unterschiedlichen EK-Preisen bestellt werden? Auch hier ist eine weitere Zuordnungstabelle nötig.
-- die Tabelle "Artikelgruppe" ist überflüssig. Nur für einen "Key" (Autowert) ist das sinnlos.
-- für was sind die "Platzhalter"-Felder?
-- Sonderzeichen ("-") im Feldnamen "E-Mail" und Leerzeichen im Feld "Einsatz für" vermeiden.
--Feld "Adresse" aufdröseln in "Ort", "Strasse" etc...
Das alles als Mindeständerung.
Allgemein: bessere Benamsung benutzen, z. B.
tblLieferanten
LiefID
Lief_Firmaname
Lief_LandAbk
Lief_PLZ
Lief_Ort
Lief_Strasse
Lief_TelNr
Lief_FaxNr
Lief_EMail
.
.
.
tblArtikel
ArtID
Art_AGrID
Art_Bezeichnung
Art_VKPreis
...
tblArtikelgruppen
AGrID
Agr_Bezeichnung
.
.
Hallo,
das mit dem richtigen weg hört sich schonmal gut an. also:
- der Preis ist der Bezugspreis vom Lieferanten
- ein Artikel kann teilweise von mehreren Lieferanten bezogen werden, daher gibts evtl auch verschiedene Preise pro Artikel
- in die Tabelle Artikelgruppe dachte ich nur die auto ID zu setzen und später in die tabelle die verschiedenen Gruppen einzutragen, aber
da fällt mir grad auf da brauch ich ja noch ein Feld Bezeichnung so wie du es gesetzt hast. Wo will ichs sonst hinschreiben :P
- die Platzhalter sollen das einfügen von weiteren Angaben erlauben. Hab mal gehört wenn die Beziehungen gestrickt sind kann
man nichts mehr hinzufügen oder ist das quatsch?
okay und das mit den Namen und Sonderzeichen versteh ich...
Danke echt nett von dir!
Grüße
Hallo,
ok, wenn verschiedene Lieferanten den gleichen Artikel mit unterschiedlichen Preisen liefern können, dann wird eine Tabelle "tblLieferantenartikel" benötigt, in der LiefID, ArtID und Bezugspries enthalten sind. Deas Feld Preis fällt aus Tabelle Artikel dann heraus. In den bestellposition wird dann als Verweis auf den entspr. Artikel die LiefArtID aus Tabelle tblLieferantenartikel benutzt.
"...oder ist das quatsch" --> das IST Quatsch. Lediglich an den Beziehungsfeldern (Schlüsselfeldern) ist schwierig zu ändern....
Eine Tabelle kann jederzeit mit weiteren Attribut-Felden erweitert werden.
Guten Morgen!
Okay das ist schonmal gut zu wissen!
Die Positionstabelle ist für mich im Prinzip unwichtig, da pro Bestellung
nur ein Artikel bestellt werden soll.
Habe mal alles aktualisiert und hab nun mal mein aktuelles Datenmodell im Anhang.
Sieht irrgend wie bischen seltsam aus, bin mir nicht sicher ob es so funktionieren kann...
Würd mich über ein Statement dazu freuen.
Viele Grüße
[Anhang gelöscht durch Administrator]
HAllo,
ist auch noch nicht ganz korrekt.
Diese Beziehungen müssen gelöscht weden:
Lieferanten.Lief_Key - Bestellung.Lief_Key
Bestellung.Art_Key - Artikel.Art_Key
Felder Bestellung.Lief_key und Bestellung.Art_Key löschen.
Feld Bestellung.Best_LiefArt_Key einbauen
Diese Beziehungen aufbauen:
Bestellung.Best_LiefArt_Key - LieferantenArtikel.LiefArt_Key
Guten Morgen :-)
Danke Franz! Habs wieder abgeändert und denke das es jetzt so passen müsste.
Nochmal vielen Dank ohne deine Hilfe wärs wahrscheinlich super schief gegangen...
Also schöne Grüße in Richtung Bodensee ;)
[Anhang gelöscht durch Administrator]
So hab mal bissi probiert und muss sagen es funktioniert fast :D
Doch kurz vor Schluss kam wieder mal was dazwischen....
Möchte in meinem Formular für die Bestellung meine Artikel und
Lieferanten auswählen. Das funktioniert auch doch dann soll im
Formular auch der Preis des jeweiligen Lieferanten angezeigt werden,
doch ich bekomm ein leeres Feld in das ich einen Preis eintragen kann. ???
Ne Idee?
Danke
Hallo,
und wo hast Du den Preis gespeichert?
Es gibt ja nur ein Feld "Bezugspreis", dort kommt aber der Preis rein am Tage der Bestellung.
In welchem Feld hast Du also den Preis hinterlegt?
Wenn Deine Artikel von verschiedenen Lieferanten kommen mit unterschiedlichen Preisen brauchst Du noch eine weitere Tabelle (als Preisliste) in der die Priese gespeichert werden. Ähnlich der Tabelle "LieferantenArtikel".
Und noch eine entscheidenede Frage: Was passiert bei Preisänderungen?
Und : Soll auch eine Preishistorie erfasst werden?
Hallo
Also hatte mir das so gedacht das der Preis immer aus dem Feld Bezugspreis gezogen wird. Bei Preis Änderung
sollte man in einem anderem Formular die Preisänderung durchführen.
Eine Preis Historie wäre von Vorteil. Dafür brauch ich aber bestimmt die zusätzliche Tabelle stimmts?
Kleine Bestelldatenbank.... muss sagen für mich als Anfänger hätte ichs auch anders nennen können ;)
Wie bzw wo würde ich die zusätzliche Tabelle im Datenmodell einfügen?
Schöne grüße
Hallo,
sorry, ich habe das nicht gleich alles richtig gelesen. Die von mir vorgeschlagene Tabelle gibt es ja schon. Füge in der Tabelle "Bestellung" noch ein Feld ein für den Preis. Nenne das Feld z.B. "Einkaufspreis". Nach Auswahl eines LiefArt_key wird auch der Bezugspreis ermittelt und redundant als Einkaufspreis gespeichert. Die Preisermittlung erfolgt im Ereignis "Nach Aktualisierung" des Feldes "LiefArt_key" mit der Funktion DLookUp(). Bei diesem Vorgehen lässt sich auch eine Preishistorie realisieren. Diese einfache Lösung ist nicht ganz datenbankgerecht im Sinne der Normalisierung aber es ist einfacher. Im anderen Fall müsste man eine Preisliste führen mit einem Datum für den Preis und dann an Hand des Bestelldatums den zum Bestellzeitpunkt gültigen Preis ermitteln. Das sit aber deutlich aufwendiger.
Guten Morgen,
Danke für die Antwort! Habs entweder nicht richtig verstanden oder was falsch gemacht...
sorry bin net so fit in Access. :-\ Aufjedenfall funktioniert es nicht so wie ichs gern hätte. Hab mal
n screenshot angehängt vllt kann man ja meinen Fehler erkennen.
Danke schonmal
Schöne Grüße
[Anhang gelöscht durch Administrator]
Hallo,
lade die DB hoch, mit anonymen, wenigen Daten. Komprimiert und gezippt. Version 2003 oder kleiner.
Konnte es nicht packen, da es hier am rechner kein zip programm gibt...
Habs per e-mail an accessomania@trash-mail.com geschickt. Einfach auf die
Seite www.trash-mail.com gehen und ohne PW Post abholen. Hoff es klappt.
Grüße Kai
Hallo,
und welche Datei ist das dann?
Bitte etwas sorgältiger erklären, ich kenne das überhaupt nicht.
entschuldigung!hab grad festgestellt das die Seite nur mit mails ohne Anhang funktioniert :(
hast du noch ne idee wie ich dir die datei zukommen lassen könnte?
Grüße
Hallo,
schick mir die Db, ich lade die dann hier hoch.
d f 6 g l (ä t ) g m x. d e
danke franz sehr nett und aufmerksam ;)
habs losgeschickt....
Grüße Kai
Hier ist sie..
[Anhang gelöscht durch Administrator]
und nochmal mit ein paar Modifikationen..
[Anhang gelöscht durch Administrator]
Danke!!! Funktioniert ja schon fast :D
Ich müsste glaube ich noch was ändern aber weis auch nicht obs so möglich ist wie ich mir es denke.
Ich möchte bei einer Bestellung als erstes die Kategorie auswählen. z.b Metall. Dann möchte ich in einem
Kombinationsfeld die Artikel wählen können die zu der Kategorie gehören. Danach sollte ich in der Beschreibung wählen können z.b 16" oder 18". Wenn das getan ist, sollte
im nächsten Kombinationsfeld nur noch die Lieferanten angezeigt werden die diesen Artikel auch liefern können.
Dazu müsste ich beim Artikel Tabelle auch die Lieferanten festlegen oder?
Ist das generell so möglich?
Grüße Kai
PS: Will nur zum Schluss nochmal sagen wie dankbar ich euch bin! Finds echt schön das es doch noch Leute gibt die sich
untereinander bzw anderen helfen! Großes Lob!!!
Hallo,
Stichwort Abhängige Kombifelder:
www.donkarl.com/?FAQ4.36
"Dazu müsste ich beim Artikel Tabelle auch die Lieferanten festlegen"
Nein, der Tabellenaufbau gibt das schon her. Es ist nur eine Frage der richtigen Auswahlabfrage(n) für die Kombis.
Okay dann probier ichs mal hinzubekommen...
Habt mir sehr geholfen also großen Dank!
Schöne Zeit!
Viele Grüße Kai
Mit der neuen Version von Access wird dies gelöst. :P