AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

m:n-Beziehung

Ein Thema von TypusMensch · begonnen am 5. Sep 2003 · letzter Beitrag vom 12. Okt 2003
Antwort Antwort
Seite 1 von 2  1 2      
TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#1

m:n-Beziehung

  Alt 5. Sep 2003, 19:38
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
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#2

Re: m:n-Beziehung

  Alt 5. Sep 2003, 19:58
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.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: m:n-Beziehung

  Alt 6. Sep 2003, 11:50
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)???
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#4

Re: m:n-Beziehung

  Alt 7. Sep 2003, 20:06
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:
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;
Zeigst du später eine bestimmte Bestellung an, kannst du KuArt z.B. filtern und weitere Lookupfelder aus der Artikeltabelle anzeigen.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: m:n-Beziehung

  Alt 7. Sep 2003, 20:19
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 (Ich weiß, voll kompliziert...)

ThX trotzdem.
  Mit Zitat antworten Zitat
Fingolfin

Registriert seit: 8. Okt 2003
62 Beiträge
 
#6

Re: m:n-Beziehung

  Alt 9. Okt 2003, 00:09
Zitat von TypusMensch:
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 (Ich weiß, voll kompliziert...)

ThX trotzdem.
Hi TypusMensch, ich stecke momentan bei einem ähnlichen Problem und da ich auch nicht unbedingt den Weg über SQL gehen möchte, würde mich deine Lösung interessieren. Aber so richtig schlau werde ich aus ihr nicht.

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
  Mit Zitat antworten Zitat
Fingolfin

Registriert seit: 8. Okt 2003
62 Beiträge
 
#7

Re: m:n-Beziehung

  Alt 12. Okt 2003, 01:54
Hat denn niemand eine Idee?

Bitte Bitte.

Fingolfin
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#8

Re: m:n-Beziehung

  Alt 12. Okt 2003, 09:20
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 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.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Fingolfin

Registriert seit: 8. Okt 2003
62 Beiträge
 
#9

Re: m:n-Beziehung

  Alt 12. Okt 2003, 17:54
Zitat von MrSpock:
Hallo Fingolfing,
zunächst einmal herzlich willkommen im Delphi-PRAXIS Forum.
Hallo.

Zitat von MrSpock:
Dass du zwischen 00:09 Uhr und 01:54 Uhr keine Antwort bekommen hast, sollte dich nicht entmutigen und nicht dazu hinreissen, gleich noch mal zu posten.
Sorry, ich habe fast nur Nachts Zeit für den Rechner und wenn ich dann irgendwo stecken bleibe, bin ich gleich stark am Verzweifeln. Ich bin das nächste mal geduldiger.

Zitat von MrSpock:
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.
Jetzt hat es funktioniert. Vielen Dank.

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
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#10

Re: m:n-Beziehung

  Alt 12. Okt 2003, 19:12
Zitat:
Obwohl ich mir gut vorstellen kann, daß diese Realisierung später stark unübersichtlich wird, werde ich doch so weitermachen.
deshalb sollte man sich vorher über das db design im voraus gedanken machen. damit andere auch später deine db pflegen können solltest du unbedingt mit sql arbeiten
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz