Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: pawel13 am Juni 08, 2012, 15:32:48

Titel: m:n Beziehung
Beitrag von: pawel13 am Juni 08, 2012, 15:32:48
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!)
Titel: Re: m:n Beziehung
Beitrag von: database am Juni 08, 2012, 16:19:56
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]
Titel: Re: m:n Beziehung
Beitrag von: pawel13 am Juni 08, 2012, 17:08:00
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
Titel: Re: m:n Beziehung
Beitrag von: database am Juni 08, 2012, 17:22:29
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

Titel: Re: m:n Beziehung
Beitrag von: pawel13 am Juni 14, 2012, 14:11:10
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
Titel: Re: m:n Beziehung
Beitrag von: database am Juni 14, 2012, 22:15:29
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.

Titel: Re: m:n Beziehung
Beitrag von: pawel13 am Juni 15, 2012, 08:50:42
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]
Titel: Re: m:n Beziehung
Beitrag von: database am Juni 16, 2012, 18:14:01
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]
Titel: Re: m:n Beziehung
Beitrag von: pawel13 am Juni 21, 2012, 15:40:31
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
Titel: Re: m:n Beziehung
Beitrag von: pawel13 am Juni 28, 2012, 13:34:20
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
Titel: Re: m:n Beziehung
Beitrag von: DF6GL am Juni 28, 2012, 14:50:40
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.
Titel: Re: m:n Beziehung
Beitrag von: pawel13 am Juni 28, 2012, 15:04:26
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
Titel: Re: m:n Beziehung
Beitrag von: DF6GL am Juni 28, 2012, 15:20:08
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.

Titel: Re: m:n Beziehung
Beitrag von: pawel13 am Juni 28, 2012, 15:23:17
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
Titel: Re: m:n Beziehung
Beitrag von: MzKlMu am Juni 28, 2012, 15:26:40
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.
Titel: Re: m:n Beziehung
Beitrag von: pawel13 am Juni 28, 2012, 15:36:05
Hallo,

ja das ist aber nicht der eigentliche Sinn. Ich möchte ja durch mein Navigationsformular auf den Punkt Befunde gehen können um da einen Patienten auszuwählen.
Zu diesem sollen alle Befunde aufgelistet werden (Nur Datum und Titel) und diese sobald ich einen anklicke unten in einem Textfeld dann ausführlich zu sehen  sein.

Bekomm das leider echt nicht hin  :(

Danke

VG
Titel: Re: m:n Beziehung
Beitrag von: pawel13 am Juni 28, 2012, 15:37:07
Hallo,

ja das ist aber nicht der eigentliche Sinn. Ich möchte ja durch mein Navigationsformular auf den Punkt Befunde gehen können um da einen Patienten auszuwählen.
Zu diesem sollen alle Befunde aufgelistet werden (Nur Datum und Titel) und diese sobald ich einen anklicke unten in einem Textfeld dann ausführlich zu sehen  sein.

Bekomm das leider echt nicht hin  :(

Danke

VG
Titel: Re: m:n Beziehung
Beitrag von: DF6GL am Juni 28, 2012, 18:15:17
Hallo, anbei ein Vorschlag....





[Anhang gelöscht durch Administrator]
Titel: Re: m:n Beziehung
Beitrag von: pawel13 am Juni 29, 2012, 10:09:04
Hallo Franz,

danke dir für den Vorschlag finde den sehr gut.

Formatiere das Ganze noch ein bisschen und habe dann was ich wollte.
Kannst du mir bitte noch sagen was geändert werden muss damit beim öffnen des Formulars die einzelnen Felder(Datum,Titel) leer sind und nicht alle Befunde direkt aufgelistet sind?


Habe gerade noch bemerkt dass du die Beziehugen und Tabellen geändert hast. War mein Gedankengang nun so falsch mit der Zwischentablle Patienten:Befunde ?
Nun habe ich ja nur noch eine 1:n Beziehung. Werde im späteren Verlauf ja wieder das gleiche Problem bekommen und da gibts Tabellen da kann ich auf die m:n nicht Verzichten...

Ansonsten noch eine Frage benöte ich bei einer reinen Zwischentablle (für m:n) einen PK=?

Danke

VG

Paul
Titel: Re: m:n Beziehung
Beitrag von: pawel13 am Juni 29, 2012, 11:53:56
Noch eine Kleinigkeit die Vorheriger und Nächster Buttons beziehen sich nun auf den Befund nicht mehr auf den Patienten wie ich es eigentlich gedacht hatte und auch im frmPatienten so ist.

Wie kann ich dies ändern??

Danke!!!!!
Titel: Re: m:n Beziehung
Beitrag von: DF6GL am Juni 29, 2012, 13:32:40
Hallo,


nein, das ist mit diesem Form so nicht möglich, weil darin gar keine Patienten(-Datensätze)  angezeigt werden.

Wenn Du durch die Patienten navigieren  und dabei für jeden Patienten dessen Befunde anzeigen willst, dann könntest Du eine verknüpfende Abfrage über tblPatienten und tblBefunde für das Form verwenden und die Patientendaten mit anzeigen. Dafür ist aber ein Endlosform nicht gut geeignet.  Am Besten machst Du ein navigierbares (Haupt-)Form mit Basis zu tblPatienten und darin ein Endlosform als UFO mit Verknüpfung von /nach über die Patienten-ID. (Wobei wir wieder am Ausgangspunkt (HF/UF-Konstruktion) wären)

Mach dazu ein neues Einzelform mit den Navibuttons und Datenherkunft zu tblPatienten und entferne die Navibuttons aus dem jetzigen Befunde-Form.  Dieses Befundeform ziehst Du anschliessend auf das o. g. Patienten-Form. Passe evtl. die Verknüpfugseigenschaften an.



Alles Andere führt zu nichts...
Titel: Re: m:n Beziehung
Beitrag von: pawel13 am Juni 29, 2012, 15:01:39
Hallo,

ok werde es dann mal so versuchen. Nun jedoch noch mal zu der Frage was muss ich in dem VBA Code ändern damit beim öffnen des Formulars nicht alles Befunde/Diagnosen direkt angezeigt werden sondern leere Felder bzw. nur eine leere Zeile?

Danke
Titel: Re: m:n Beziehung
Beitrag von: pawel13 am Juli 09, 2012, 16:07:23
Hallo mal wieder,

habe ein kleines Problem. Ich habe das Fomular Diagnose erstellt und auch alle Felder demenstpechen umbennant. Jedoch funktioniert der VBA Code AfterUpdate nicht mehr.
Ich bekomme immer den Fehler dass diese 438 Methode wird nicht unterstützt.

Private Sub cmbPatientID_AfterUpdate()
    Me.Filter = "PD_patientIDRef =  " & Me!cmbPatientID
    Me.FilterOn = True

    Me!PD_patientIDref.DefaultValue = Me!cmbPatientID
End Sub

Kann mir jemand den Fehler verraten????

Danke

VG

Paul
Titel: Re: m:n Beziehung
Beitrag von: DF6GL am Juli 09, 2012, 16:18:10
Hallo,

vermutlich nicht, woher sollen wir wissen, was genau(!!)  geändert wurde...


Vermutungen:


-- ist "cmbPatientID"  ein ungebundenes Kombifeld mit diesem Namen?
-- welche Zeile wird vom Debugger markiert?
-- steht in der Ereignis-Eigenschaft "Vor Aktualisierung" des Steuerelementes "cmbPatientID" der Eintrag "[Ereignisprozedur]" drin?



Der Code wird solange nicht abgearbeitet, solange er noch Fehler enthält.
Titel: Re: m:n Beziehung
Beitrag von: pawel13 am Juli 09, 2012, 16:27:10
Hallo,

danke für die schnelle Antwort habe gerade eben den Fehler entdeckt.

Vielen Dank trotzdem!!
Titel: Re: m:n Beziehung
Beitrag von: DF6GL am Juli 09, 2012, 16:37:59
und welcher war es?
Titel: Re: m:n Beziehung
Beitrag von: pawel13 am Juli 10, 2012, 10:19:56
Ein Feld war falsch benannt.

Habe den Wald vor lauter Bäumen nicht gesehen :)

Nun noch ein andres Problem. Ich habe ein Fomrular welches ich ein mal normal öffne über eine Navigationsschaltfläche  und ein mal das gleiche Formular als Pop Up
(Hierbei wird ein Patient vorher ausgewählt und zu diesem wird die ID übernommen).
Funktionier auch alles gut bisher, nur wenn ich in ein leeres Feld auf dem geöffnetem Frm klicke ersetzt er direkt die Patienten ID obwohl vorher einer andere ausgewählt war.
Eine Idee woran es liegen könnte?

Ich denke es liegt daran dass ich die ID aus dem 1. Formular übernehmen muss um diese als Kriterium im 2. Formular zu verwenden für den entsprechenden Patienten.
Ich bitte um Hilfe!

Danke und VG

Paul
Titel: Re: m:n Beziehung
Beitrag von: DF6GL am Juli 11, 2012, 16:01:15
Hallo,


ok,  versteh aber das neue Problem nicht richtig:

Nun noch ein andres Problem. Ich habe ein Fomrular welches ich ein mal normal öffne über eine Navigationsschaltfläche  und ein mal das gleiche Formular als Pop Up


Sind das zwei separate Forms?


"Hierbei wird ein Patient vorher ausgewählt und zu diesem wird die ID übernommen)."

??


"wenn ich in ein leeres Feld auf dem geöffnetem Frm klicke ersetzt er direkt die Patienten ID obwohl vorher einer andere ausgewählt war. "


In welchem Form klickst Du? 



"Ich denke es liegt daran dass ich die ID aus dem 1. Formular übernehmen muss um diese als Kriterium im 2. Formular zu verwenden für den entsprechenden Patienten"

das musst Du nicht.. Öffne das 2. Form mit Angabe einer Bedingung als Where-Condition-Parameter. Dann zeigt das Form gleich den richtigen DS an und es muss nichts Übernommen werden.



Warum willst Du 2 Formulare für die Anzeige/Bearbeitung DERSELBEN Daten benutzen? Das gibt ungeahnte Probleme (Schreibkonflikte) und führt zu grauem Haarausfall.... ;)
Titel: Re: m:n Beziehung
Beitrag von: pawel13 am Juli 11, 2012, 16:19:10
Hallo,

also es geht in erster Linie darum dass ich Frm Diagnose & Befund ein mal dazu benutzen möchte um durch die einzelenen Befunde/Diagnosen zu stöbern.
Andererseits öffne ich eine Kopie des Formulars über einen Button untern dem Frm Patient sobal ich einen ausgewählt habe. Hierbei übernimmt er auch die Patienten ID jedoch
wird diese gelöscht sobald ich in ein Fled klicke.

Vlt hast du eine elegantere Lösung. Es soll einfach möglich sein nur die Befunde etc. als Nachschlagewerk zu nutzen & nachdem man einen Patienten auswählt direkt für ihn bzw. über ihn die einzelnen Befunde etc. zu sehen/ bearbeiten/ anzulegen etc.

DANKE schon mal und mal wieder!

VG

Paul ;D
Titel: Re: m:n Beziehung
Beitrag von: DF6GL am Juli 11, 2012, 17:08:43
Hallo,

die elegante Lösung liegt im Tabellenaufbau verborgen....


Wenn Du zu einem Patienten (--> Haupttabelle)  mehrere Befunde/Diagnosen (--> Untertabelle) , d.h . eine 1:n-Tabellenstruktur hast, dann bietet sich eine Haupt/Unterformular-Lösung an.  In einer solchen Formularkonstruktion kannst Du schalten und walten, wie es Dir beliebt.  (Suchen, Anzeigen, Erfassen, Löschen, Ändern, usw.)