Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Über Kombinationsfeld Wert in Textfeld ausgeben

Begonnen von Chrisew, April 19, 2023, 17:01:29

⏪ vorheriges - nächstes ⏩

Chrisew

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

andyfau

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
Beste Grüße
Andreas

Chrisew


MzKlMu

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.
Gruß Klaus

Chrisew

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?

MzKlMu

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.

Gruß Klaus

Beaker s.a.

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
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)

Chrisew

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!