Neuigkeiten:

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

Mobiles Hauptmenü

Verknüpfung HaFo und UFo - Oder Eigenschaft?

Begonnen von datekk, Juli 05, 2016, 13:52:29

⏪ vorheriges - nächstes ⏩

datekk

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???
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

MzKlMu

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

datekk

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?
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MzKlMu

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

Gruß Klaus

Beaker s.a.

Klaus Lösung ist natürlich viel besser, 2. FK-Feld statt Kennzeichen  8)
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

datekk

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.
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

MzKlMu

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

datekk

Ich habe keine Eintragungen im Beziehungsfenster mehr. Seit meiner Umstellung auf ein Sql Server Backend hab ich das noch nicht wieder aufgebaut.
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

MzKlMu

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

datekk

#10
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....?
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

MaggieMay

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"??
Freundliche Grüße
MaggieMay

datekk

Es gibt keinen gemeinsamen Key. Wo siehst Du den?
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

datekk

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.
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps