collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 85
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 2
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13975
  • stats Beiträge insgesamt: 66548
  • stats Themen insgesamt: 8971
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Beziehung 1:n oder n:m fürs Formular...  (Gelesen 1063 mal)

Offline Elektroschrott

  • Newbie
  • Beiträge: 10
Beziehung 1:n oder n:m fürs Formular...
« 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:
  • 1. Tabelle Daten mit den Feldern: Name, Schultyp und Klasse
  • 2. Tabelle Hinweise mit den Feldern: Schultyp, Klasse und Hinweise
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“:
  • Die Integration des Feldes „Hinweise“ in das Formular gelingt zwar, nur sind die Felder im Formular anschließend alle schreibgeschützt. (habe gelesen, dass das wohl bei einer Beziehung 1:n oder n:m der Fall sein kann)
  • Die Integration ins Formular gelingt zwar, allerdings werden jetzt nur noch die Datensätze angezeigt, bei denen es einen Eintrag in der 2. Tabelle gibt. Das ist ein no-go, da dies bei vielen Datensätzen der Fall sein wird.

Meine Fragen:
  • Geht das rein technisch überhaupt? Ist das eine 1:n- oder eine n:m-Beziehung? Einen Primärschlüssel kann es in der 2. Tabelle ja nicht geben…
  • Und falls es möglich ist, dann wie?
Vielen Dank für Hinweise!!
 

Online DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23347
Re: Beziehung 1:n oder n:m fürs Formular...
« Antwort #1 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.

Offline Elektroschrott

  • Newbie
  • Beiträge: 10
Re: Beziehung 1:n oder n:m fürs Formular...
« Antwort #2 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
 

Online DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23347
Re: Beziehung 1:n oder n:m fürs Formular...
« Antwort #3 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.

Offline Elektroschrott

  • Newbie
  • Beiträge: 10
Re: Beziehung 1:n oder n:m fürs Formular...
« Antwort #4 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
 

Offline Elektroschrott

  • Newbie
  • Beiträge: 10
Re: Beziehung 1:n oder n:m fürs Formular...
« Antwort #5 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?
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1246
Re: Beziehung 1:n oder n:m fürs Formular...
« Antwort #6 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
   '...
Grüße von der (⌒▽⌒)
 
Folgende Mitglieder bedankten sich: Elektroschrott

Offline Elektroschrott

  • Newbie
  • Beiträge: 10
Re: Beziehung 1:n oder n:m fürs Formular...
« Antwort #7 am: Dezember 22, 2017, 13:56:57 »
Super, hat sofort funktioniert!!