Neuigkeiten:

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

Mobiles Hauptmenü

InnerJoin u. LeftJoin

Begonnen von Ubbo, Februar 03, 2020, 10:57:09

⏪ vorheriges - nächstes ⏩

Ubbo

Hallo zusammen
Ich habe eine Adress DB in der ich eine 'Tbl Kennungen' und eine Tabelle 'Telef_Nrn' habe, damit ich den einzelenen Adressdatensätzen mehrere Kennungen oder Telefonnr. zuordnen kann.
Ich habe dann Pull-Down Felder erstellt in denen ich nach Kennungen oder Tel.Nr. suchen kann.
Im Hintergrund baue ich dann einen SQL-String zusammen. Bei der Kennung mußte ich ein InnerJoin nutzen.
Siehe:
FROM Tbl_ADRPRIV INNER JOIN Tbl_Kennung_Adresse ON
Tbl_ADRPRIV.Kennummer = Tbl_Kennung_Adresse.Adress_ID
Where (((Tbl_Kennung_Adresse.Kennung_ID) = " & Kom_Auswahl_Kennung.Column(2) & "))
Bei den Telef.Nr. einen LeftLoin
siehe:
FROM Tbl_ADRPRIV Left JOIN Tbl_Telef_Nrn ON
Tbl_ADRPRIV.Kennummer = Tbl_Telef_Nrn.Kennummer_Tel
WHERE (((Tbl_Telef_Nrn.TelefonNr) Like  '*" & Text_TelefNr_suchen & "*'))

Beide funktionieren mit der Einschränkung, das ich dann in den gefilterten Sätzen keine Eigaben oder Änderungen an den Daten vornehmen kann.
Wie kann ich das ändern???

DF6GL

Hallo,


die Abfragen sind "nicht aktualisierbar"  (---> gockeln!)

Was Du machst, ist ein Such/Filter-Vorgang.


Um Aktualisierungen durchzuführen, benutze Aktualisierungsabfragen ( Update.....), die direkt auf eine Tabelle wirken.

Ubbo

Danke für den Hinweis.
Leider ist er nicht zielführend da ich die Funktion Update nur auf eine Tabelle anwenden kann. Ich habe aber eine Abfrage die in der Tabelle Adressen alle Datensätze anzeigt, die über die Verbindung zur Tabelle Kennung die Datensätze Anzeigt, denen eine bestimmte Kennung zugeordnet wurde.
Das funktioniert.
Ich möchte dann aber zu einem dieser Datensätze gehen und dort beliebige Felder ändern. das ist mein Problem. ::)

DF6GL

Hallo,

wieso ist das nicht zielführend?

Es geht nicht, mehrere Tabellen auf einmal zu aktualisieren, bzw. DS aus left join zu bearbeiten...

Du musst Dir eine andere Strategie ausdenken.


Baue ein HFO mit einem UFO entspr. den Tabellenbeziehungen und schon geht es..

Ubbo

Hallo
Das mit dem InnerJoin u. dem LeftJoin war mir schon klar, deshalb ja meine Frage. ;D
Ich habe jetzt nur ein Verständnisproblem.
Wir ü-70 haben es nicht so mit dem Kürzeldeutsch. Deshab die Frage was ist ein HFO mit einem UFO.
Sollen das ein Hauptformular mit einem Unterformular sein?? Dann kann ich mal darüber grübeln wie ich das so lösen kann.
Schöne Grüße aus dem Norden

Hondo

Ja,
hfo = hauptformular
ufo = unterformular

Ubbo

Hallo Honda
Da war meine Vermutung ja richtig.
Ich habe bereits ein Hauptformular mit einem Unterformular (in dem ich die Kennungen zuordne).
Ich werde jetzt weitergraben wie ich mein Problem in den Griff bekomme.
Ein Moin aus dem Norden
Ubbo

DF6GL

Hallo,

hast Du neben den Formularen auch Tabellen, die normalisiert und in Beziehung zueinander stehen?

Zeig mal einen Screenshot des Beziehungsfensters.

Ubbo

Hallo DF6GL
war etwas beschäftigt, deshalb erst jetzt meine Antwort.
Hier ein Screenshot der Beziehungen.
wenn ich nach Kennungen auswähle kann ich noch einmal zusätzlich einen Datensatz nur aus der erfolgten Auswahl
mit Suche nach Namen ausfiltern. Die Kennungen im Unterformular können geändert werden. Alle anderen Eintragungen nicht.
Bei den Kennungen kann ich über das 2. Kombinationsfeld noch bestimmen ob diese Kennung nur für den 1. (1) nur für den 2. (1) oder für beide (B) Namen gelten soll.
Das Kombinationsfeld 'Auswahl nach Kennungen' greift nur auf die Tabelle Tbl_Kennung_1 zu in der die ID des Adressdatensatzes mit den ID's der Kennungen verknüpft werden.
Ich hoffe Du kannst da etwas mit anfangen.
Gruß   Ubbo aus dem Norden

DF6GL

Hallo,

ich überblicke jetzt nicht die gesamten Probleme, die Du hast.

Die gezeigten Beziehungen (beiden die Einstellung der referenziellen Integrität fehlt) sagen aus, dass es zu einer Adresse mehrere "Kennungen" geben kann.

Soweit ok, aber was hat das mit der Filterung und den nicht aktualisierbaren Abfragen zu tun?



MzKlMu

Hallo,
ich würde bezweifeln, dass das Datenmodell überhaupt stimmt.
Kennung mit Adress_ID in Beziehungen, das kann doch nicht sein.
Versuche mal referenetielle Integrität einzustellen.
Die Kommunikatioseinträge müssen als je ein Datensatz in eine extra Tabelle.
Wieso gibt es immer 2 Namen ?
Auch das ist falsch.
Wieso ist an der Tabelle Tbl_Kennung_1 die _1 hinten angehängt ?

Das stimmt hinten und vorne nicht, so würde ich da mal nicht weiter machen.

Zeige mal ein vollständiges Beziehungsbild, so dass man alle Tabellen mit allen Feldern sieht.
Gruß Klaus

PhilS

Zitat von: DF6GL am Februar 11, 2020, 14:54:19
[...]die Einstellung der referenziellen Integrität fehlt[...]

Soweit ok, aber was hat das mit der Filterung und den nicht aktualisierbaren Abfragen zu tun?
Wenn die referenzielle Integrität nicht nur deshalb fehlt, weil sie nicht extra eingestellt wurde, sondern weil sie wegen Fehlende Primärschlüsseln gar nicht erstellt werden kann, dann sind auch Abfragen nicht aktualisierbar.


PS/Edit: Auf den zweiten Blick ist in dem Beziehungsfenster-Screenshot klar erkennbar, dass dort keine Primärschlüssel definiert sind. - Somit können die Abfragen auch nicht aktualisierbar sein.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Ubbo

Hallo PhilS
Der entscheidende Hinweis auf meinen Fehler kam von Dir.
Das fehlen des Primärschlüssels in den Tabellen.
Den Primärschlüssel in der Tabelle Tbl_ADRESSEN (der Haupttabelle) und ich kann nach Kennungen filtern und dennoch die Datensätze bearbeiten.
Herzlichen Dank allen beteiligten.
Mein Problem ist gelöst.
Danke aus dem Norden.

Beaker s.a.

ZitatMein Problem ist gelöst.
Wird bei dem Datenmodell aber nicht das letzte bleiben.
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)

Ubbo

Hallo MzKlMu
Kennung mit AdressID in Beziehung läuft über eine weitere Tabelle.
Ich habe die Tbl_ADRESSEN mit einer ID. Ich habe die Tbl_Kennungen mit einer ID der Kennung und einem Feld in dem ich ablege ob der erste Name, der 2. Name oder beide Namen die Kennung haben. Das funktioniert.
Zur Frage warum es immer 2 Namen gibt:
Ich brauche für einen Datensatz natürlich 2 Namen da ja heute in eine Lebensgemeinschaft jeder seinen Namen behalten kann. alse brauche ich auch 2 Vornamen und 2 Nachnamen. Ob die bei jedem Datensatz genutz werden hängt von den Umständen ab.
Zur Tbl_Kennungen_1: Natülich kann die Tabelle auch ohne die_1 auskommen, das ist ja nur eine Benennung. die kann man halten wie man will. Das jetzt noch zu ändern ist mir zu zeitaufwendig durch alle Prozeduren, zumal die Datenbank läuft.
Trotzdem allen beteiligten herzlichen Dank für die Hinweise.
Mein DB läuft  Gruß aus dem Norden  Ubbo
Ps. Auf Wunsch stelle ich gern eine Bedienungsanleitung (als PDF )zur verfügung in der alle Funktionen erläutert werden.