Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Chrisew am April 19, 2023, 17:01:29

Titel: Über Kombinationsfeld Wert in Textfeld ausgeben
Beitrag von: Chrisew am April 19, 2023, 17:01:29
Hallo zusammen,
ich bin absoluter Accessneuling und versuche mich gerade an einer Datenbank für den schulischen Einsatz.

Grob zur Datenbank: In einer Tabelle tblStammdaten sind alle Schüler der Schule hinterlegt. Dokumentiert werden sollen Beratungsanlässe. Dazu habe ich die Tabelle tblBeratungsprotokolle angelegt. In der Tabelle werden alle Beratungen der Schüler dokumentiert. Nun möchte ich über ein Formular (frmBeratungsprotokolle) die einzelnen Beratungpsprotokolle aufrufen können.

Folgendes möchte ich erreichen: In einem ersten Kombinationsfeld (cboSchueler) soll der Schüler ausgewählt werden. Dann sollen in einem zweiten Kombinationsfeld (cboDatum) alle Datumseinträge angezeigt werden, an denen eine Beratung des Schülers stattgefunden hat. Je nachdem, welches Datum ausgewählt ist, sollen sich dann die weiteren Textfelder des Formulars (Anliegen, Vereinbarung, Bemerkung, Nächster Termin und Uhrzeit) automatisch füllen.

Ich habe es bereits geschafft, dass sich das zweite Kombinationsfeld je nach Auswahl im ersten Kombinationsfeld automatisch füllt:

Private Sub cboSchueler_AfterUpdate()
    Me.cboDatum.RowSource = "SELECT Datum FROM tblBeratungsprotokolle WHERE StammdatenID=" & Me.cboSchueler.Value
End Sub


Aber bei der automatischen Füllung der weiteren Textfelder hänge ich. Könnt ihr weiterhelfen?
LG
Chris
Titel: Re: Über Kombinationsfeld Wert in Textfeld ausgeben
Beitrag von: andyfau am April 19, 2023, 19:09:59
Hallo,

es scheint, dass der Ansatz noch nicht mit einer korrekten Tabellendefinition einhergeht.
Bei richtiger Tabellendefinition und Verknüpfung kann Access, zumindest das Grundformular, generieren.

Zeige mal die Tabellen im Beziehungsfenster.
Beste Grüße
Andreas
Titel: Re: Über Kombinationsfeld Wert in Textfeld ausgeben
Beitrag von: Chrisew am April 20, 2023, 07:24:32
Hallo Andreas,
anbei ein paar Screenshots.
LG
Titel: Re: Über Kombinationsfeld Wert in Textfeld ausgeben
Beitrag von: MzKlMu am April 20, 2023, 09:19:27
Hallo,
Du solltest erstmal einige Dinge ändern.
- Bei den Beziehungen ist grundsätzlich referentielle Integrität einzustellen
- Nenne die ID nicht einfach ID, sondern mit Bezug zu Tabelle. Z.B StammdatenId,
 Den Fremdschlüssel dann StammdatenId_F.
- Der * in den Feldnamen ist unbedingt zu entfernen. Der * ist auch der Joker bei der Suche. Überhaupt keine Sonderzeichen in Feldnamen verwenden, allenfalls der _ ist erlaubt.
- Keine Nachschlagefelder in Tabellen verwenden.
- Tabellenkästchen so groß ziehen daß man auch sieht wo die Beziehung endet.

Dann Beziehungsbild hier noch mal zeigen.
Titel: Re: Über Kombinationsfeld Wert in Textfeld ausgeben
Beitrag von: Chrisew am April 23, 2023, 10:40:28
Hallo zusammen,
ich habe deine Ratschläge befolgt und die Datenbank überarbeitet.

Ich beherrsche VBA nicht und habe mir mithilfe eines Youtubetutorials ein Formular gebastelt, welches Daten aus einer Abfrage enthält. Die Abfrage fragt aus der Tabelle tblStammdaten die StammdatenID, Nachname, Vorname, Jahrgang und Klasse ab. Zusätzlich alle Felder der Tabelle tblBeratungsprotokolle, in der für jeden Schüler x-beliebige Beratungsprotokolle hinterlegt sind.

Soweit klappt alles, ich lasse mir die Abfrage in einem Formular frmBeratungen anzeigen. Nun zu meinem Ursprungsproblem: Ich möchte über zwei Kombinationsfelder cbxSchüler und cbxDatum die angezeigten Daten filtern. Dazu habe ich in der Abfrage mit Wie-Kriterien gearbeitet. Das funktioniert über die StammdatenID ohne Probleme (Wie "*" & [Formulare]![frmBeratungen]![cbxSchüler] & "*"), der Filter zeigt alle Einträge zu Schüler X an.

Im Kombinationsfeld cbxDatum werden mir zwar Datumseinträge angezeigt, allerdings funktioniert der Filter nicht. Auch hier habe ich in der Abfrage im Entwurfsmodus ein Wie-Kriteriun formuliert (Wie "*" & [Formulare]![frmBeratungen]![cbxDatum] & "*").

Wo hänge ich? Oder gibt es eine einfachere Lösung für einen Dummy wie mich, sich ein Beratungsprotokoll über eine Namens- und Datumssuche anzeigen zu lassen?
Titel: Re: Über Kombinationsfeld Wert in Textfeld ausgeben
Beitrag von: MzKlMu am April 23, 2023, 12:16:38
Hallo,
da Du mit Kombis filterst, ist Wie und der Joker überflüssig.
Das reicht aus:
=[Formulare]![frmBeratungen]![cbxSchüler]Man würde aber nicht über die Abfrage filtern, sondern direkt das Formular.
Da werden dann 2-3 Zeilen VBA gebraucht.


Aber erst mal noch Fragen zum Datenmodell:

Was ist die Beratungsansprache und was ist das Beratungsprotokoll ?
Hängt das nicht zusammen ?

PS:
Du hast noch Leerzeichen in Feldnamen, das sind auch Sonderzeichen die man vermeiden sollte. Bitte noch entfernen.

Titel: Re: Über Kombinationsfeld Wert in Textfeld ausgeben
Beitrag von: Beaker s.a. am April 23, 2023, 12:50:30
Hallo Chris,
ZitatZusätzlich alle Felder der Tabelle tblBeratungsprotokolle, in der für jeden Schüler x-beliebige Beratungsprotokolle hinterlegt sind.
Die gehören da nicht rein. Diese Tabelle gehört in ein UFo mit einer
Verknüpfung über die StammdatenID; - Prinzip: eine Tabelle - ein Formular.
Bei der 1:n-Beziehung hast du jetzt im HFo die Stammdaten jeweils so oft
wie es Beratungen gibt.
Auf Fehler im DM einzugehen habe ich jetzt keine Lust (sorry). Vielleicht
macht Klaus ja weiter.

gruss ekkehard
Titel: Re: Über Kombinationsfeld Wert in Textfeld ausgeben
Beitrag von: Chrisew am April 23, 2023, 13:09:09
Zitat von: Beaker s.a. am April 23, 2023, 12:50:30Hallo Chris,
ZitatZusätzlich alle Felder der Tabelle tblBeratungsprotokolle, in der für jeden Schüler x-beliebige Beratungsprotokolle hinterlegt sind.
Die gehören da nicht rein. Diese Tabelle gehört in ein UFo mit einer
gruss ekkehard

Hallo Ekkehard,
soweit war ich auch schon. Allerdings bekomme ich die Suchfunktion nicht hin. Ich muss mir wohl eingestehen, dass meine Fähigkeiten nicht ausreichen und wir unsere Abteilung weiterhin mit den guten alten Hängeregistern verwalten müssen :D Danke trotzdem für eure Mühe!