![]() |
m:n-Beziehung
Also ich will eine m:n-Beziehung gestalten.
Folgendermaßen: Ich habe eine Tabelle mit Kunden, eine Tabelle mit Artikel. Jedem Kunden können mehrere Artikel zugewiesen werden. Jeder Artikel von kann von verschiedenen Kunden gekauft werden. Also habe ich am Ende drei Tabellen: Kunden: KNr (Schlüssel), Name Artikel: ANr (Schlüssel), Bezeichnung KuArt: ID (Schlüssel), KNr (Fremdschlüssel), ANr (Fremdschlüssel) Das ganze soll wenn möglich mittels Access-Datenbank realisiert werden, wenn nötig auch Paradox. Ich verstehe nicht, wie ich was bei den ADOTable eingeben muss, damit das klappt. Habe zwar schon was gemacht gehabt, aber das war dann am Ende nur 1:n Beziehung. Daher der "Trick" mit der Extra-Dritten-Tabelle... ich hab null Plan wie ich die aber da reinschreibe, ... die Daten Hoffe, mir kann da jemand helfen. MfG Marcus |
Re: m:n-Beziehung
Hallo TypusMensch,
das ist je weniger eine Frage von Einstellungen im TAdoTable Objekt. Du musst dir ein Design für die Anwendung überlegen. Du könntest z.B. einen Menüpunkt Stammdaten anlegen, über den du Kunden und Artikel getrennt anlegen kannst. Außerdem bietet dein Programm dann die Möglichkeit eine neue Bestellung zu erzeugen. Die Artikel wählst du aus z.B. aus einer Liste und für jeden Artikel, der in der Bestellung ist erzeugst du einen Eintrag in KuArt. Je nachdem, wie du KuArt später sortierst, kannst du alle Kunden anzeigen lassen, die einen bestimmten Artikel gekauft haben oder alle Artikel, die ein Kunde (in einer bestimmten Bestellung oder insgesamt) bisher gekauft hat. |
Re: m:n-Beziehung
nun gut, ich habe jetzt 2 tabellen auf meinem form. kann jetzt beliebig viele artikel und kunden erstma getrennt eingeben.
nun stellt sich mir aber die frage, wie und was muss ich nun für ADOTable setzen, damit ich nun in einem z.b. anderen form den kunden artikel zuordnen kann (folgich inner KuArt)??? |
Re: m:n-Beziehung
Hallo TypusMensch,
wie gesagt, es hat eigentlich nichts mit einer Einstellung bei einem ADOTable Objekt zu tun. Aber angenommen du hast dem User die Möglichkeit eingeräumt, einen Kunden für eine neue Bestellung einzugeben, dann kannst du z.B. ein Formular öffnen, in dem der Benutzer Artikel auswählen und der Bestellung zuordnen kann. Hat der User einen Artikel und z.B. die Anzahl ausgewählt, kannst du einen neuen Eintrag in der Tabelle KuArt erzeugen:
Delphi-Quellcode:
Zeigst du später eine bestimmte Bestellung an, kannst du KuArt z.B. filtern und weitere Lookupfelder aus der Artikeltabelle anzeigen.
KuArt.Append;
{ Falls ID in KuArt kein AutoInc Feld ist: } KuArt.ID := AktBestellNr; KuArtKNr.AsString := AktuellerKunde; KuArtANr.AsString := ArtikelANr.AsString; KuArtAnzahl.AsInteger := Menge; ... KuArt.Post; |
Re: m:n-Beziehung
Alles klar, das Problem ist einfach "Datenbanken"... immer wieder ein Problem für mich... Hab's aber jetzt hinbekommen...
Ich denk halt anders: 1. Kunden.db (NORMAL) 2. KuArt.db - mit Master auf Kunden (KNr (Schlüssel von Kunden.db) = KNr (Fremdschlüssel von KuArt.db) 3. Artikel.db - mit Master auf KuArt (ANr (Schlüssel von KuArt.db) = ANr (Fremdschlüssel von KuArt.db) So hätte ich es verstandnen :freak: (Ich weiß, voll kompliziert...) ThX trotzdem. |
Re: m:n-Beziehung
Zitat:
Sollte das hier: 3. Artikel.db - mit Master auf KuArt (ANr (Schlüssel von KuArt.db) = ANr (Fremdschlüssel von KuArt.db) nicht so heißen? 3. Artikel.db - mit Master auf KuArt (ANr (Schlüssel von Artikel.db) = ANr (Fremdschlüssel von KuArt.db) So sollte es meiner Meinung nach sein, so funktioniert es bei mir aber nicht, daß die Liste, die mit der dazugehörigen Datasource verbunden ist immer nur den ersten Eintrag (Detail) anstatt alle relevanten anzeigt. Danke schonmal, Fingolfin |
Re: m:n-Beziehung
Hat denn niemand eine Idee? :cry:
Bitte Bitte. Fingolfin |
Re: m:n-Beziehung
Hallo Fingolfing,
zunächst einmal herzlich willkommen im Delphi-PRAXIS Forum. Dass du zwischen 00:09 Uhr und 01:54 Uhr keine Antwort bekommen hast, sollte dich nicht entmutigen :mrgreen: und nicht dazu hinreissen, gleich noch mal zu posten. Wie ich bereits geschrieben habe, ist das so nicht machbar. KuArt ist ja eine n:m Beziehung, wenn du jetzt einen Kunden ausgewählt hast, hast du über die Master-Detail Beziehung alle Artikel dieses Kunden ausgewählt. Aber nur ein Datensatz ist ausgewählt. Wenn du jetzt eine Master-Detail Beziehung zwischen KuArt und Artikel herstellst, wird dir immer DER Artikel zum aktuellen Datensatz angezeigt! Was du aber machen könntest, ist ein zusätzliches Feld (über den Feldeditor) in KuArt anzuzeigen (z.B. Artikelbezeichnung) und dir dieses über Lookup aus der Artikeldatei zu holen. Dann bekommst du die Artikelinformationen gleich in KuArt mit angezeigt. |
Re: m:n-Beziehung
Zitat:
Zitat:
Zitat:
Das hat mich bald irre gemacht. Obwohl ich mir gut vorstellen kann, daß diese Realisierung später stark unübersichtlich wird, werde ich doch so weitermachen. Ich habe dasselbe auch mit SQL realisiert aber da habe ich starke Performance-Einbrüche beobachtet. :?: Ist das eigentlich normal? Fingolfin |
Re: m:n-Beziehung
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz