Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: datekk am Juli 05, 2016, 13:52:29

Titel: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: datekk am Juli 05, 2016, 13:52:29
Hi,

ich habe eine Kundentabelle sowie eine Auftragstabelle.

Kundentabelle: IdKunde, Kundenname
Auftragstabelle: IdAuftrag, KundenIdRef, AbwKundenIdRef, Auftragsname

Normalerweise erhalte ich von einem Kunden einen Auftrag. Manchmal erhalte ich aber von einer Agentur einen Auftrag, welcher einen anderen Kunden betrifft. Agenturen sind auch bei mir als Kunden hinterlegt. In diesem Fall wird in der Auftragstabelle die Agentur als KundenIdRef gespeichert, die ID des Kunden bzw. Dritten kommt in die Spalte AbwKundenIdRef.

Nun habe ich ein Kundenformular in welchem sich ein UFo befindet und mir die Aufträge des jeweiligen Kunden anzeigt. Die Verknüpfung ist in diesem Falle ja ganz einfach. IdKunde=KundenIdRef.

In o.g. zweiter Konstellation wird mir bei der Agentur der Auftrag im UFo angezeigt.

Nun möchte ich aber auch, dass bei dem eigentlichen Kunden auch der Auftrag angezeigt wird. Wie ist dies möglich? Gibt es irgendwie die Möglichkeit HaFo und UFo so zu verknüpfen: IdKunde=KundenIdRef ODER AbwKundenIdRef???
Titel: Re: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: MzKlMu am Juli 05, 2016, 13:59:10
Hallo,
in einer Datenbank würde man das vorzugsweise mit einer weiteren Tabelle lösen mit einem Fremdschlüssel zum Kunden und einem FS zum Auftrag.
Wird die Bestellung von einer Agentur gemacht so sind in dieser Tabelle 2 Datensätze mit je einem Fremdschlüssel zum Kunden und einem FS zur Agentur.
Die Felder KundenIdRef und AbwKundenIdRef entfallen dann in der Auftragstabelle.
Du hast auf diese Art und Weise zu einem Auftrag sowohl Agentur als auch Kunde in einer Spalte.
Titel: Re: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: datekk am Juli 05, 2016, 14:16:26
Ok, ich würde gern die Tabelle einsparen, da dies tiefergreifende Änderungen an meiner Datenbank nach sich ziehen würde, die ich nicht unbedingt durchführen möchte. Gibt es andere Lösungen?
Titel: Re: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: Beaker s.a. am Juli 05, 2016, 14:49:39
Hallo,
Ist dies vielleicht auch Möglichkeit, die Agenturen nicht als Kunden sondern
eben als Agentur (so als eine Art Vertreter) anlegen, und deren ID dem
Kunden als Fremdschlüssel zuordnen.
Können ja auch beide in einer Tabelle drin bleiben; - Identifizierung per
KennZeichenfeld. Die Strukturänderung wäre also nur das Anlegen von zwei
neuen Feldern in tblKunden, - FKAgentur und KZ.
Die Tabelle wird dann mit sich selbst über dieses Feld in Beziehung (1:n)
gesetzt.
Falls jedoch ein Kunde bei mehreren Agenturen gelistet sein kann, braucht
es eine weitere Tabelle, um das abzubilden.

gruss ekkehard
Titel: Re: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: MzKlMu am Juli 05, 2016, 16:19:46
Hallo,
wenn Du nicht umstrukturieren willst (was auf Dauer die bessere Lösung wäre), so würde ich das anders machen.

Zwei Fremdschlüsselfelder (...ref) eines für den Kunden und eines für die Agentur.
Da Du im Falle einer Agenturbestellung ja ohnehin 2 Felder ausfüllst, so ist im FS zum Kunden immer der Kunde zu speichern auch bei einer Agenturbestellung. Ist es eine Agentur wird zusätzlich im entsprechenden Fremdschlüsselfeld die Agentur eingetragen. In der Kundenreferenz steht also immer der Kunde (wie der Name schon sagt).

Die Kundentabelle wird 2x in das Beziehungsfenster aufgenommen und 1x mit Kunde..ref und 1x mit Agentur...ref verknüpft.

Titel: Re: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: Beaker s.a. am Juli 05, 2016, 17:45:27
Klaus Lösung ist natürlich viel besser, 2. FK-Feld statt Kennzeichen  8)
Titel: Re: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: datekk am Juli 07, 2016, 11:55:57
Hallo Klaus,

sorry, aber ich verstehe das noch nicht so ganz. Meine Auftragstabelle hat eine Spalte für die Kundennummer und nun auch eine Spalte für die Agentur... das ist erledigt.

Wie meinst Du das folgende genau:

"Die Kundentabelle wird 2x in das Beziehungsfenster aufgenommen und 1x mit Kunde..ref und 1x mit Agentur...ref verknüpft."

Welches Beziehungsfenster meinst Du? Redest Du jetzt von der Abfrage als Datenquelle des HaFo oder UFo oder vom Verknüpfungsfeld HaFo/Ufo, da wüsste ich aber nicht was Du meinst mit "Kundentabelle wird 2x in das Beziehungsfenster aufgenommen..." Wie soll das gehen?

@Beaker: Die Agenturen sind bei mir als Kunden erfasst, aber mit einem anderen Typschlüssel versehen. Allerdings sind eher Agenturen für mehrere verschiedene Kunden zuständig.
Titel: Re: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: MzKlMu am Juli 07, 2016, 12:37:45
Hallo,
ZitatWelches Beziehungsfenster meinst Du?
es gibt nur ein Beziehungsfenster. Das ist das Fenster in dem die Beziehungen angelegt werden. Das hat mit Abfragen zunächst mal nichts zu tun. In Abfragen werden aus den Beziehungen Verknüpfungen, die können gleich sein, müssen aber nicht.

Zeige mal ein Bild des Beziehungsfensters.
Titel: Re: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: datekk am Juli 07, 2016, 12:48:34
Ich habe keine Eintragungen im Beziehungsfenster mehr. Seit meiner Umstellung auf ein Sql Server Backend hab ich das noch nicht wieder aufgebaut.
Titel: Re: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: MzKlMu am Juli 07, 2016, 13:30:38
Hallo,
ZitatSeit meiner Umstellung auf ein Sql Server Backend hab ich das noch nicht wieder aufgebaut.
eine Datenbank ohne Beziehungen ist ein Wiederspruch in sich.  ;D

Dann zeige mal ein Bild der Verknüpfungen in der Abfrage.
Titel: Re: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: datekk am Juli 07, 2016, 14:02:54
Von welcher Abfrage? Das HaFo basiert auf der Kundentabelle, das UFo auf der Auftragstabelle. Die Verknüpfung läuft nur über das HaFo / UFo.

Ich denke, ich bräuchte eine Abfrage als Datenlieferung des UFOs, deren Ergebnis in etwa so aussieht:

Ausgangsdaten Tabelle Aufträge:
IdAuftrag, AuftraggeberIdRef, KundenIdRef
1,1,NULL
2,2,3
3,4,NULL
4,5,6

IdAuftrag, AuftraggeberIdRef, KundenIdRef, VerknüpfungsID
1, 1, NULL, 1
2, 2, 3, 2
2, 2, 3, 3
3, 4, NULL, 4
4, 5, 6, 5
4, 5, 6, 6

Also die Datensätze, bei denen neben dem Auftraggeber auch noch ein Kunde erfasst ist, sollen doppelt erscheinen. Dabei wird jedoch die VerknüpfungsID einmal vom Auftraggeber und einmal vom Kunden angezeigt. Die Verknüpfung HaFo/UFo erfolgt dann über die VerknüpfungsID. Damit wäre der Auftrag bei beiden Sichtbar.

Nur, wie bekomme ich so ein Abfrageergebnis hin....?
Titel: Re: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: MaggieMay am Juli 07, 2016, 15:19:28
Hi,
ZitatDas HaFo basiert auf der Kundentabelle, das UFo auf der Auftragstabelle.
du kannst die Aufträge zu den Kunden mit Hilfe des geimensamen Keys anzeigen.
Wozu noch eine neue "VerknüpfungsID"??
Titel: Re: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: datekk am Juli 07, 2016, 15:36:27
Es gibt keinen gemeinsamen Key. Wo siehst Du den?
Titel: Re: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: Beaker s.a. am Juli 07, 2016, 15:37:43
Hallo datekk,
Zitatsorry, aber ich verstehe das noch nicht so ganz. Meine Auftragstabelle hat eine Spalte für die Kundennummer und nun auch eine Spalte für die Agentur... das ist erledigt.
Nein, nicht bei den Aufträgen, da ist die Agentur nicht nötig, da durch die
Kundennr. bereits identifiziert.
In die Kundentabelle gehört ein neues Fremdschlüsselfeld für die Agentur.
Da kommt bei einem Kunden die "Kunden"-Nr. (ID) der Agentur rein. Bei
der Agentur auch (da ist die dann gleich der ID). Für dieses neue Feld kannst
du aber auch gleich dieses Feld
ZitatDie Agenturen sind bei mir als Kunden erfasst, aber mit einem anderen Typschlüssel versehen. Allerdings sind eher Agenturen für mehrere verschiedene Kunden zuständig.
umwandeln, da es eh nicht mehr gebraucht wird. Das ist ja mit dieser
Modellierung kein Problem, mehrere Kunden bekommen die gleiche
Agenturnr. Den, eher unwahrscheinlichen Fall, dass ein Kunde von
mehreren Agenturen betreut wird, habe ich in einem meiner ersten
Posts schon angesprochen; - da bräuchte man eine zusätzl. Tabelle.

@Klaus
?
Zitatund 1x mit Kunde..ref und 1x mit Agentur...ref verknüpft."
Wieso zwei? Reicht nicht die Verknüpfung von Kunde zu Agentur (1:n)?

gruss ekkehard
Titel: Re: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: datekk am Juli 07, 2016, 15:56:26
Ok, ich verstehe die Vorgehensweise. Diese ist aber nicht anwendbar, da ich es individuell pro Auftrag händeln muss. Es ist leider so, dass Kunden mal selbst beauftragen, dann mal wieder über eine Agentur. Von daher wäre mir die Verknüpfung rein in den Aufträgen lieber. Zumal Kunden auch ihre Agenturen öfter wechseln.
Titel: Re: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: Beaker s.a. am Juli 07, 2016, 16:28:36
Hallo datekk,
ZitatDiese ist aber nicht anwendbar, da ich es individuell pro Auftrag händeln muss
O.K., dann macht das Feld Sinn, und die Auftragstabellewird im Prinzip zu
der von mir erwähnten zusätzl. Tabelle, die die Beziehung zwischen Kunden
und Agenturen abbildet.
Das zusätzl. Feld für die Agentur in der Personentabelle brauchst du aber
trotzdem um diese Beziehung(en) zu ermöglichen.

@Klaus
Jetzt verstehe ich auch, warum zwei. Du bist von Anfang an von o.a.
Konstellation ausgegangen. Den zweiten FK in Aufträge hatte ich gar nicht
auf dem Schirm.

@datekk
zurück zu dir
Wenn du also beide Fremdschlüssel-Felder angelegt hast verknüpfst du die
KundenNr aus Personen einmal mit dem Fremdschlüssel "Kunde" in Aufträge und
einmal mit dem Fremdschlüssel "Agentur" in Aufträge. So wie Klaus es beschrieben,
und ich es nicht verstanden habe  >:(

gruss ekkehard
Titel: Re: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: MaggieMay am Juli 07, 2016, 18:12:39
Hi,
Zitat von: datekk am Juli 07, 2016, 15:36:27
Es gibt keinen gemeinsamen Key. Wo siehst Du den?

Zitat von: datekk am Juli 05, 2016, 13:52:29
Kundentabelle: IdKunde, Kundenname
Auftragstabelle: IdAuftrag, KundenIdRef, AbwKundenIdRef, Auftragsname

Was ist das denn, wenn nicht der Verknüpfungsschlüssel zwischen den Tabellen?
Titel: Re: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: datekk am Juli 08, 2016, 09:08:50
Hi,

ich habe mal eine Beispieldatenbank angehangen. Das Formular frmKundenAufträge bildet den Kern meines Problems. Ziel soll es sein, dass der Auftrag mit der ID 2 sowohl beim Kunden ID 2 wie auch beim Kunden ID 4 (Agentur) im UFO angezeigt werden soll. Gleiches beim Auftrag mit ID 3 (sowohl beim Kunden ID 3 wie auch beim Kunden ID 6 (Agentur).

Titel: Re: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: MaggieMay am Juli 08, 2016, 11:54:44
Erkläre doch bitte mal den offensichtlich mehrdeutig belegten Begriff "Kunde".
Was ist der Unterschied zwischen "Besteller" und "Kunde"?

Die technische Lösung sähe so aus, dass du die Kundentabelle einmal mit der KundenID und ein zweites Mal mit der BestellerID verknüpfst. Dann erstellst du eine Abfrage mit ebenfalls drei Tabellen. Hier kannst du dann nach KundenID und/oder BestellerID filtern.

Nachtrag:
Eine Verknüpfung von HF und UF ist somit nicht möglich, das UF ist an eine Parameterabfrage zu binden, die bei Kundenwechsel aktualisiert werden muss.

Titel: Re: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: datekk am Juli 08, 2016, 12:21:42
Hallo MaggieMay,

es gibt keinen Unterschied zwischen Besteller und Kunde. Ich hab das nur zur besseren Differenzierung so benannt. Man könnte auch Kunde und Abweichender Kunde nennen oder Kunde und Dritter... oder Agentur und Kunde....

Könntest Du das Beispiel von mir anpassen, sodass ich verstehe wie das funktioniert mit dieser Parameterabfrage...?
Titel: Re: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: MaggieMay am Juli 08, 2016, 12:29:24
Bitte gerne! :-)

Ich habe die Standardwerte für die Fremdschlüssel in der tblAufträge rausgenommen,
dann lassen sich auch die Beziehungen mit referentieller Integrität einstellen.
Titel: Re: Verknüpfung HaFo und UFo - Oder Eigenschaft?
Beitrag von: datekk am Juli 11, 2016, 09:14:08
Hallo MaggieMay,

sehr smart gelöst - genau wie es sein soll. Du hast die Abfrage statt der Formular-Verknüpfung genutzt und damit eine "ODER-Klausel" geschaffen, welche im normalen Verknüpfungsfenster fehlt. Besten Dank :)