Neuigkeiten:

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

Mobiles Hauptmenü

m:n Beziehung

Begonnen von pawel13, Juni 08, 2012, 15:32:48

⏪ vorheriges - nächstes ⏩

pawel13

Hallo!

Ich bin noch ungeübt bei dem Umgang mit Access(2010) und habe da ein Problem.
Folgende Sachlage:

Ich habe eine DB für eine Praxis die Patienten,Befunde,Diagnosen etc hat.
Nun habe ich eine Tabelle Patienten, Befunde und als Linktabelle PatientenBefunde

Ich möchte nun beim Anlegen durch ein Formular eines neuen Befundes wie folgt vorgehen.
Ein Patient wird ausgewählt und zu diesem ein Befund erstellt. Den Patienten wähle ich über die Kombobox aus und seine ID wird auch in der linkTabelle gesichert.

Jedoch wird die ID des erstellten Berichts zu ihm nur in der Tabelle Berichte gesichert und nicht ind der linktabelle.

Ich brauche dringend Hilfe sehe gehe ich das ganze Falsch an? (Habe ein Formular aus der Tabelle Berichte erstellt!)

database

#1
Hallo,

in erster Linie musst du dafür sorgen, dass die Tabellenkonstruktion stimmt.

Dann baust du ein Formular zur Erfassung der Befunde, Datenherkunft sei die Tabelle 'tblBefunde'.
Auf diesem Formular erstellst du ein Kombifeld für die Auswahl der Patienten - Datenherkunft ist eine Abfrage auf die Patiententabelle 'tblPatienten'.
Das Kombi ist an den Fremdschlüssel ('PatientenID_F') in der 'tblBefunde' gebunden.
Weitere Felder der Tabelle 'tblBefunde' am Formular.

Zur Illustration habe ich dir ein kleines Beispiel hochgeladen.

HTH

p.s. Die Lösung über eine Zwischentabelle ist zwar auch möglich - ich würde aber eine 1:n Beziehung zwischen Patienten und Befunden vorziehen (da auch nichts dagegen spricht)

[Anhang gelöscht durch Administrator]

pawel13

Hallo,

viele Dank für die schnelle Antwort und die tolle Hilfe. Ja ist ein super Vorschlag allerdings ist eine m:n Beziehung gefordert.
Ich habe die Zuweisung mittlerwile hinbekommen. Nun ein anderes Problem.

Wie schafffe ich es in meinem Formular zu erst einen Patienten auszuwählen und anschließend alle Berichte zum ihm anzeigen zu lassen?
Bspl.: Patient über Kombobox und dann eine Liste mit den Berichten.bzw in einer Liste der Bericht mit Datum, da drunter dann der neue Bericht.

Vielen Dank schon mal

Mfg

Paul

database

Hallo,

Zitat...allerdings ist eine m:n Beziehung gefordert...
Aha, wer wagt denn solche Forderungen zu stellen?  ::)

... indem du eine Abfrage erstellst, welche die 'Zwischentabelle' der m:n Beziehung und die Berichtstabelle/Befundtabelle enthält.
Kriterium für die PatientenID in der Zwischentabelle soll die Auswahl im Kombifeld sein.
Die Abfrage stellt die Datenherkunft für ein Listenfeld dar, in dem dann die erstellten Befunde für den ausgewählten Patienten aufgelistet werden.
Ins Ereignis 'Nach Aktualisierung' des Kombifeldes und ins Ereignis 'Beim Anzeigen' des Formulars schreibst du:

Me.DeinListenfeld.Requery  ... Damit wird die Liste neu aufgebaut.

Für die Erfassung weitere Befunde/Berichte dienen die Felder im Formular so wie du es erstellt hast.

HTH


pawel13

Hallo,


nochmals Danke für die Antwort, ja leider wird das von einer Person gefordert und ich muss mich danach richten...

Irgendwie klappt das mit der Abfrage etc.

also habe eine Abfrage erstellt in welcher ich die Ziwschnetabelle sowie die Tabelle tblBefunde habe. Kriterium ist Kombifeld vom Formular.

Nun kommt allerdings sobald ich das Formular öffne eine msgBox in welcher ich die ID manuell eingeben soll und es wird nicht die aus der Kombobox entnommen.
Habe auch die VBA Befehle bei den Ereignissen eingegeben.

VG

Paul

database

Hallo Paul,

du kannst eine Kopie deinr DB mit ein paar Spieldaten hier repariert/komprimiert und gezippt hochladen.
Ich schaue mir das gerne am Samstag an.


pawel13

Hallo,

super vielen Dank das wird mir bestimmt eine große Hilfe sein.

Alle bisherigen Daten sind nur fiktive Beispieldaten. Entscheident sind die Beiden Formulare besonders das für Befunde. Wie gesagt sollen zu jedem Patienten seine Befunde angezeigt werden und wenn einer davon ausgewählt wird soll eine Detailansicht kommen (evtl darunter) mit dem Inhalt

VG


Paul

[Anhang gelöscht durch Administrator]

database

Hallo Paul,

wie versprochen habe ich mir dein Werk angeschaut.
Das Formular frmBefunde habe ich ein wenig verändert  ;D
Zu dem habe ich an der Tabelle tblBefunde Änderungen vorgenommen - ich habe ein Feld 'befundTitel' eingefügt.
Dieses Feld soll eine Art Überschrift - ev. zur Schnellerkennung liefern.

Weiter habe ich ein Unterformular erstellt in dem die Befunde eines ausgewählten Patienten angezeigt werden.
Bei den Buttons wurden ebenfalls Änderungen vorgenonmmen - so ist ein Button zum Editieren bestehender Befunde dazugekommen.
Beim Button für neue Datensätze musste ich ebenfalls was ändern - hier habe ich das Makro verworfen und
durch VBA ersetzt bzw. erweitert.
Insgesamt sind einige Zeilen Code hinzugekommen . schau dir das an.

Tja und dann hoffe ich dass du mit dem Vorschlag was anfangen kannst -
schönes WE!

[Anhang gelöscht durch Administrator]

pawel13

Hallo Peter,

das ist echt der Wahnsinn. ;D Vielen Dank

Genau das was ich gebraucht habe kann nun den Rest der DB darauf aufbauen.

Noch mal vielen Dank für deine Hilfe!

Gruß,

Paul

pawel13

Hallo Peter,

ich habn doch noch ein Problem. Sofern ich das Formular frmBefunde nutze funktioniert alles. Öffne ich dies aber im Navigationsbereich will er einen Parameter haben?? Auch wenn die ich verknüpfte Abfrage aus dem Unterformular lösche ist die Funktionalität dahin.
Sofern ich frmBefunde aus dem Navibereich lösche und neu einfüge geht gar nichts mehr. Dann findet er es laut VBA Editor nicht mehr.

Ich bitte dich noch ein mal um Hilfe und bedanke mich schonmal dafür!

VG

Paul

DF6GL

Hallo,

für meine Begriffe halte ich diese HF/UFO-Konstruktion nicht für zielführend...  Warum wird überhaupt ein HF und ein UF zur Darstellung der selben Daten benutzt?

Die Felder aus tblBefunde und tblPatientenbefunde gehören m. E in eine einzige Tabelle zusammengefaßt.  (Ich nehme nicht an, dass ein bestimmter Befund mehreren Patienten zugeordnet werden soll/muss...

Diese "Parameterabfrage" rührt von dem Kriterium als Verweis auf ein Formularfeld in der Abfrage für das Form her...
Beides ist überflüssig/falsch:  Verknüpfende Abfrage und Formualverweis.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

pawel13

Hallo Franz,

danke für deine Antwort. Ja bin da auch noch etwas unschlüssig ob das so der richtige Weg ist mit dem UF. Jedoch soll es die m:n Beziehung geben damit man die Befunde nach einem Bestimmten Titelmuster speichern kann und hinterher auch sehen kann welcher Befund kam bei welchen Patienten vor.

Danke

VG

Paul

DF6GL

Hallo,

versteh nicht, wie Du das meinst....

"Jedoch soll es die m:n Beziehung geben damit man die Befunde nach einem Bestimmten Titelmuster speichern kann und hinterher auch sehen kann welcher Befund kam bei welchen Patienten vor."


Warum n:m ?


Es braucht nur eine 1: n Beziehung zwischen tblPatienten  und tblBefunde....

Das hat auch nichts mit Sucherei zu tun, eine solche kann immer eingebaut werden.

".. nach einem Bestimmten Titelmuster speichern "   versteh ich gar nicht... Soll bei der Erfassung eines bestimmten Befundes für einen Patienten ein gewisser Titel aus einer "Befundtitel-Liste" ausgewählt werden?  Wenn so, dann braucht es eine Tabelle "tblBefundtitel" , in der alle möglichen Titel (und evtl. weitere Daten, die zu einem TITEL gehören) abgelegt werden und aus der mittels Kombifeld bei der Erfassung eines "Patientenbefundes" der gewünschte Titel ausgewählt und als "Befundtitel-ID"-Wert) in "tblPatientenbefunde" übernommen wird.

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

pawel13

Hallo,

ja ok verstehe was du meinst. Trotzdem ist damit ja noch nicht mein Problem gelöst alle erfassten Befunde eines Patienten weiter unten in der Detailansicht darzustellen.

VG

Paul

MzKlMu

Hallo,
ZitatTrotzdem ist damit ja noch nicht mein Problem gelöst alle erfassten Befunde eines Patienten weiter unten in der Detailansicht darzustellen.
Doch, ist gelöst. Die Detailansicht als Ufo in dem Formular für den Patienten. Ufo und Hafo über die Schlüsselfelder verknüpft hast Du genau die Darstellung die Du willst. Schnell, einfach und automatisch ohne etwas zu programmieren.
Gruß Klaus