Access-o-Mania

Access-Forum => Tabelle/Abfrage => Thema gestartet von: Elektroschrott am Dezember 20, 2017, 14:21:53

Titel: Beziehung 1:n oder n:m fürs Formular...
Beitrag von: Elektroschrott am Dezember 20, 2017, 14:21:53
Liebes Forum, ich komme mit einem Problem nicht weiter  >:( und habe den Eindruck, dass es womöglich in Access gar nicht lösbar ist. Folgende – stark vereinfachte – Situation:

Vorhanden:
Ziel:
Im bereits vorhandenen Formular (Datenquelle: 1. Tabelle) sollen die Hinweise aus der 2. Tabelle schreibgeschützt angezeigt werden, sofern Schultyp und Klasse übereinstimmen. Sollte es keine Hinweise in der 2. Tabelle geben oder anderweitig keine Übereinstimmung, dann bleibt dieses Info-Feld halt leer.

Bisherige „Erfolge“ über unterschiedliche Versuche mit der Funktion „Beziehung“:

Meine Fragen:
Vielen Dank für Hinweise!!
Titel: Re: Beziehung 1:n oder n:m fürs Formular...
Beitrag von: DF6GL am Dezember 20, 2017, 15:58:32
Hallo,

es ist vieles lösbar. Leichter wäre es, wenn die Tabellen zunächst entspr. den Regeln der Normalisierung aufgebaut würden.


Warum werden die Tabellen nicht zu einer zusammengefasst?  Dann könnte einfach in einem Formular das Feld "Hinweise"  gesperrt werden.


Andere Tricksereien:

--Ein Feld im Formular einrichten, das als Steuerelementinhalt den Aufruf der Dlookup-Funktion enthält und der als Kriterien die Felder "Schultyp" und  "Klasse" mitgegeben werden.


--Ein Unterformular mit Datenherkunft zur Tabelle "Hinweise" einbauen, das über die beiden Felder "Schultyp" und  "Klasse" verknüpft.
Titel: Re: Beziehung 1:n oder n:m fürs Formular...
Beitrag von: Elektroschrott am Dezember 21, 2017, 07:28:09
Hallo Franz, herzlichen Dank für die ausführliche Antwort und die vielen Vorschläge! Ich werde wohl zwischen den Jahren mal Zeit finden, da weiter dran zu arbeiten.
Den ersten Tipp allerdings verstehe ich nicht ganz. In der ersten Tabelle finden sich die Stammdaten zu Personen und in der zweiten möchte ich davon unabhängig Infos zu bestimmten Klassenstufen hinterlegen, die für alle gleichermaßen gelten. Daher kann ich mir nicht vorstellen, dass das irgendwie in eine Tabelle geht.
Schöne Feiertage, Elektroschrott
Titel: Re: Beziehung 1:n oder n:m fürs Formular...
Beitrag von: DF6GL am Dezember 21, 2017, 08:39:51
Hallo,

das Beispiel trifft nicht diese Beschreibung:
In der ersten Tabelle finden sich die Stammdaten zu Personen und in der zweiten möchte ich davon unabhängig Infos zu bestimmten Klassenstufen hinterlegen, die für alle gleichermaßen gelten
Deshalb nochmal der Vorschlag, die Tabellen einer gründlichen Normalisierung zu unterziehen.
Titel: Re: Beziehung 1:n oder n:m fürs Formular...
Beitrag von: Elektroschrott am Dezember 21, 2017, 18:30:29
Danke, mit DLookup hat es wunderbar geklappt, vielen Dank für die Unterstützung!

Wen es interessiert, hier der für mich relevante Code:
hinweis = DLookup("[beachten]", "[tblHinweise]", "[S-Typ] LIKE [Schultyp] AND [in Klasse] LIKE [Klasse]")

If IsNull(hinweis) then
    Me.txtHinweise.Visible = False
Else
    Me.txtHinweise.Visible = True
    Me.txtHinweise = hinweis
End If
Titel: Re: Beziehung 1:n oder n:m fürs Formular...
Beitrag von: Elektroschrott am Dezember 22, 2017, 12:38:37
Jetzt habe ich doch noch eine Frage...
In einer dynamischen Optionsgruppe möchte ich Datensätze nach Mitarbeiter filtern lassen. Dafür existiert eine tblBerater mit den Namen der Mitarbeiter und einer ID ("Nummer"). Korrekt angezeigt werden mir die Namen der Schaltflächen bereits, es wird auch jeweils die ID korrekt für den Filter zurückgegeben. Nur irgendwie klappt die "Rückübersetzung" ID nach Mitarbeitername nicht:
Private Sub button_Click()
Dim MAFilter As String

Name1 = DLookup("[Mitarbeiter]", "[tblBerater]", "[Nummer]=1")
Me.m1.Caption = Name1
Name2 = DLookup("[Mitarbeiter]", "[tblBerater]", "[Nummer]=2")
Me.m2.Caption = Name2
Name3 = DLookup("[Mitarbeiter]", "[tblBerater]", "[Nummer]=3")
Me.m3.Caption = Name3
' Me.m3.Visible = True
MANummer = Me.optMitarbeiter
MAFilter = DLookup("[Mitarbeiter]", "[tblBerater]", "[Nummer]=MANummer")
MsgBox MAFilter
Me.Filter = "[Berater(in)]=MAFilter AND [Ehemalig]=False"
Me.FilterOn = True

End Sub

Was irgendwie nicht funktioniert, ist die Zeile
MAFilter = DLookup("[Mitarbeiter]", "[tblBerater]", "[Nummer]=MANummer")
Habe schon verschiedene Schreibweisen ausprobiert, was mache ich falsch?
Titel: Re: Beziehung 1:n oder n:m fürs Formular...
Beitrag von: Lachtaube am Dezember 22, 2017, 12:52:49
   Dim Criteria As String
   Dim EinMitarbeiter As String
   
   '...
   
   'das geht hier aber um 3 Ecken
   Criteria = BuildCriteria("Nummer", dbLong, Me.optMitarbeiter)
   EinMitarbeiter = Nz(DLookup("Mitarbeiter", "tblBerater", Criteria))
   Criteria = BuildCriteria("[Berater(in)]", dbText, EinMitarbeiter) & " AND " & _
              "Ehemalig = False"
   Me.Filter = Criteria
   '...
Titel: Re: Beziehung 1:n oder n:m fürs Formular...
Beitrag von: Elektroschrott am Dezember 22, 2017, 13:56:57
Super, hat sofort funktioniert!!