Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Kleine Bestelldatenbank

Begonnen von gueka, Juli 07, 2010, 17:00:17

⏪ vorheriges - nächstes ⏩

gueka

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


DF6GL

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.



Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

gueka

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]

DF6GL

#3
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
.
.

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

gueka

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

DF6GL

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.

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

gueka

#6
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]

DF6GL

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
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

gueka

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]

gueka

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

MzKlMu

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?
Gruß Klaus

gueka

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

MzKlMu

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.
Gruß Klaus

gueka

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]

MzKlMu

Hallo,
lade die DB hoch, mit anonymen, wenigen Daten. Komprimiert und gezippt. Version 2003 oder kleiner.
Gruß Klaus