Neuigkeiten:

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

Mobiles Hauptmenü

Zuordnungstabelle nochmal

Begonnen von Carl, Mai 24, 2018, 23:52:57

⏪ vorheriges - nächstes ⏩

Carl

Hallo @all,

ich bin wieder durcheinander gekommen. Daher nochmal so eine Frage:

Ich habe
* eine tblProbanden mit Probanden und [IDP] und [Rueckmeldung]
* eine tblRueckmeldungen mit [IDR] [Rueckmeldungen]

Ich möchte jetzt im (Einzel)Formular bei jedem dem Probanden ein kleines Endlosformular haben, in das n Rueckmeldungen eingetragen werden können, je nach dem wie viele es werden.

Muss man dazu jetzt eine dritte Tabelle anlegen, tblZRueckmedlungen, die [IDP] und [IDR] als Fremdschlüssel enthalten?

Carl

MzKlMu

Hallo,
wenn es standardisierte Rückmeldungen sind ( was ich auf Grund der Tabelle annehme) ist diese 3. Tabelle zur Herstellung einer n:m Beziehung erforderlich.
Wie sonst soll es auch gehen, wenn es zu einem Probanden mehrere (n) Rückmeldungen geben kann ?
Da es in einer Datenbank keine mehrfachen Einträge in einem Feld geben darf ist diese 3. Tabelle auch zwingend erforderlich.

Der Proband wird dann im Hafo (das Einzelformular) angezeigt und die Rückmeldungen im Endlosformular als verknüpftes (über IDR und IDR_F) Ufo.
Auswahl der zutreffenden Rückmeldung per Kombifeld.
Gruß Klaus

Carl

Danke für die Antwort. Die Rückmeldung soll ein Textfeld mit 255 Zeichen werden.

Also in der Zuordnungstabelle die Schlüssel beider Tabellen als Fremdschlüssel? Wie kriege ich im Beziehungsfenster den Beziehungstyp geändert? Es gibt nur eine Schaltfläche für den Verknüpfungstyp und wenn ich da eine der drei Optionen auswähle, ändert am Beziehungstyp nicht. Er steht jetzt auf 1:n, siehe Anhang.

und wieso bekomme ich das ausgefüllte Beziehungsfenster nur, wenn ich auf den mittleren Strick klicke? Wenn ich auf die kleine 1 oder das Unendlich-Zeichen klicke erscheinen neue unausgefüllte Fenster.

Carl

MzKlMu

Hallo,
Die Rückmeldung soll ein Textfeld mit 255 Zeichen werden.das ist doch dann aber Freitext und keine standardisierten Texte (wie ich angenommen habe und auch geschrieben habe). Dann ist die Zuordnungstabelle natürlich überflüssig. Eine n:m Beziehung macht nur Sinn, wenn feste Rückmeldungen vorliegen die mit einem Kombi gewählt werden können. Was ja hier nicht der Fall ist.

Gruß Klaus

Carl

Es soll aber zu jedem Probanden n solche Rückmeldungsfenster geben.

Diese Zuordnungstabelle finde ich besonders schwer einzurichten.

Kannst Du bitte sagen, weshalb ich das ausgefüllte Beziehungsfenster nur angezeigt bekomme, wenn ich auf den mittleren Strich klicke? Wenn ich auf die kleine 1 oder das Unendlich-Zeichen klicke erscheinen neue unausgefüllte Fenster.

Carl

MzKlMu

Hallo,
ZitatEs soll aber zu jedem Probanden n solche Rückmeldungsfenster geben.
Keine n Fenster, sondern n Datensätze. Du brauchst keine n:m Zuordungstabelle. Das ist keine n:m Beziehung, sondern eine ganz normale 1:n Beziehung.
1=Probanten
n=viele Rückmeldungen
Darstellung eventuell in einem Endlosformular als Unterformular.

ZitatWenn ich auf die kleine 1 oder das Unendlich-Zeichen klicke erscheinen neue unausgefüllte Fenster.
Damit könntest Du neue Beziehungen anlegen. Das ist normales Verhalten. Mit Klick auf den Strich werden angelegte Beziehungen bearbeitet bzw. geändert.
Gruß Klaus

Carl

Ach so, alles klar. Ja, verstehe.

Danke Carl

Carl

Ich habe das von der Durchführung her noch nicht verstanden.

tblProbanden mit dem Feld ProbandenRueckmeldungen
tblRueckmeldungen mit [IDR] und Textfeld [Rueckmeldungen]

Wie kann ich jetzt machen, dass in [ProbandenRueckmeldungen] das Feld der Tabelle Rueckmeldungen erscheint? Also als Endlosfeld, wie oben gesagt, für ein Endlosformular.

Ich habs von der Durchführung her noch nicht geschnallt.

Carl

MzKlMu

Hallo,
nein, so nicht, aber so:
tblProbanden mit den Daten des Probanten und dem Primärschlüssel (IDP)
tblRueckmeldungen mit [IDR], dem Fremdschlüsselfeld (IDP_F) und Textfeld [Rueckmeldungen]
Beziehung von IDP (1) zu IDP_F (n).

Das ist die einfachste aller Beziehungen. Ich kann nicht ganz nachvollziehen, wo Du da Probleme hast.
Gruß Klaus

Carl

Danke. Weil ich damit auf Kriegsfuß stehe, mir fällt das logische Denken schwer.

Ich habe jetzt ne Abfrage mit

[tblProbanden].[IDP]
[tblRueckmeldungen].[IDR], [tblRueckmeldungen].[IDP_F] und [tblRueckmeldungen].[Rueckmeldungen]

Diese Abfrage habe ich einem Formular unterlegt.

das über das HF aufgerufen wird mit dem Button:

Private Sub btnRueckmeldung1oeffnen_Click()
DoCmd.OpenForm "frmRueckmeldungen1", , , "IDP_F=" & [ID]
End Sub

Wenn ich in dem sich öffnenden Formular in dem Textfeld was eintrage kommt die Fehlermeldung:

Kann in der Tabelle tblprobanden keinen Datensatz mit passenden Schlüsselfeldern  IDP_F finden.

Kann das mit dem von mir verwendeten Code für DoCmd.OpenForm zusammen liegen?

Carl

PS: Oder soll man das über die Abfrage so einrichten, dass immer automatisch die mit dem passenden Fremdschlüssel aufgerufen werden?

MzKlMu

Hallo,
vergiss mal die Abfragen, Du brauchst hier erst mal keine Abfrage.
Das Hafo wird an die Tabelle "Probanten" gebunden und das Ufo an die Tabelle mit den Rückmeldungen. Hafo und Ufowerden über die Schlüsselfelder verknüpft.
Im Ufo kannst Du dann zu jedem Probanten beliegig viele Rückmeldungen erfassen, VBA Code braucht es da nicht, keinen Buchstaben. Da muss man auch nichts filtern.

Zeige mal ein Bild des Beziehungsfensters mit diesen beiden Tabellen.
Gruß Klaus

Carl

Ach, okay. Ja, verstehe. Habs hin bekommen, es funktioniert. Vielen Dank.

Es gibt nur noch das Problem mit dem öffnen des HF. Ich öffne das HF derzeit mit einem Klick auf ein Textfeld:

=OpenPopUpfrmRueckmeldungen([Screen].[ActiveControl])


Im Modul steht:


Public Function OpenPopUpfrmRueckmeldungen(ctl As Control)
        DoCmd.OpenForm "frmRueckmeldungen", , , "ID=" & ctl.Parent.ID, , acDialog, ctl.Value
End Function


Jetzt habe ich die ganze Zeit schon versucht, die selbe Funktion einem Button unterzulegen, aber Access bringt dann immer ne Fehlermeldung und meckert dann immer die Zeile im Modul an.

Wenn ich weiterhin das Textfeld verwende (in dem der Name des Probanden steht), funktioniert es, dass das HF geöffnet wird und auch die Openargs richtig angezeigt werden. Aber ich möchte einen Button. Woran liegt das, dass er die selbe Funktion mit dem button nicht macht? Ist das vielleicht, weil er mit "ctl.Parent.ID" die Eltern-Idee eines Feldes sucht und Button keine Felder sind?

Carl

Lachtaube

Ein Knopf hat keine Value-Eigenschaft.
Grüße von der (⌒▽⌒)

Carl

#13
ah, danke

Wenn ich value entferne, funktioniert das Anzeigen der Openargs nur beim ersten Öffnen. Gleich beim zweiten Öffnen werden sie nicht mehr angezeigt.

Der Wert der Openargs soll aus dem Feld WOName entnommen werden.

Carl

Carl

Nochmal die Frage für openform,

ich möchte mit dem Modul das HF mit einer Schaltfläche öffnen, die natürlich keinen Wert hat.


'DoCmd.OpenForm "frmRueckmeldungen", , , "ID=" & ctl.Parent.ID, , acDialog, ctl.Value
DoCmd.OpenForm "frmRueckmeldungen", , , "ID=" & ctl.Parent.ID, , acDialog, WOName


Der Ausdruck "ctl.Value" soll nun durch einen Ausdruck ersetzt werden, der anweist, den Wert in die openargs zurück zu geben, der im Feld [WOName] steht. Ich habe schon mindestens zwei Dutzend Kombinationen durch, finde aber den richtigen Ausdruck nicht.

Wie kann man das anweisen?

Carl