Neuigkeiten:

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

Mobiles Hauptmenü

Formular durch Abfrage mit Unterformular verknüpfen (MS AC 2003)

Begonnen von michael-e.93, April 29, 2011, 17:28:29

⏪ vorheriges - nächstes ⏩

michael-e.93

Guten Tag!
Habe bei meiner Arztdatenbank folgendes Problem:

Ich versuche, mit einer Abfrage die Daten im Hauptformular auszufüllen. Dies soll geschehen, indem man davor in einem ungebundenen Textfeld eine Zahl eingibt ( BehandlungsID) und daraufhin soll er Vorname und Nachname des Patienten, der für diese BehandlungsID eingetragen ist, im Hauptformular ausgegeben werden (Dies geschieht durch einen Klick auf eine Befehlsschaltfläche, die folgendes Makro ausführt: 1. Aktualisiere Daten 2. ÖffnenFormular (selbstverständlich das o.g.).
Das dient lediglich zur Übersichtlichkeit des Anwenders.
Danach soll einfach von der BehandlungsID nach BehandlungsID im Unterformular verknüpft werden, was jedoch eigentlich keine Probleme bereiten sollte. Der Grund dieser Verknüpfung ist selbstverständlich, dass bei einer Behandlung mehrere Behandlungsschritte durchgeführt werden können.

Die Problematik liegt viel eher bei der Abfrage, die die Daten ins Formular "schreiben" bzw. herholen soll.

Als Kriterium habe ich in der Abfrage:

Das Formular heißt bei mir frm_Behandlungsschritte, wie in der Abfrage angegeben.
Das ungebundene Textfeld heißt auch txt_BHID.
Der Datentyp der BehandlungsID ist Autowert, aber ich soweit ich weiß, wird dadurch doch keine Abfrage "eingeschränkt", oder?

Meine Abfrage sieht folgendermaßen aus:   http://img600.imageshack.us/i/abfrage.png/
Das Formular: http://img853.imageshack.us/i/formular.png/

Über jeden Rat bin ich dankbar.
Grüße
Michael



DF6GL

Hallo,

das könnte besser so realisiert werden:

Hauptform "frmBehandlung"
Datenherkunft: " tbl_Behandlung"
Einzelform mit (allen) gebundenen Feldern aus "tbl_Behandlung"
Feld für den Patienten ist ein Kombi mit Datensatzherkunft "tbl_Patient"
zusätzlich ein UFO_Steuerelement für die Anzeige des folgenden

Unterform "frmBehandlungsschritte"
Datenherkunft: tbl_Behandlungsschritte
Endlosform mit (allen) gebundenen Feldern aus "tbl_Behandlungsschritte"


"Verknüpfen von/nach" im UFO-Steuerelement einstellen auf:
Von: BehandlungsID
Nach: BehandlungsID       (insgesamt bessere Benamsung wäre angeraten, weiterhin auf Sonderzeichen verzichten...--> "privat?")


Für die Suche böte sich ein (bzw. mehrere ) Kombifelder an, die je nach Auswahl das Hauptform filtern.

michael-e.93

Danke schonmal für deine Antwort, ich verstehe aber nicht ganz genau was du meinst, bin ein Anfänger was Access angeht ( lerne es in der Schule).
Also ich habe auch noch ein anderes Formular, was fehlerfrei funktioniert. Es verwaltet die Patienten (falls ich richtig denke, dürfte das Formular, was du angesprochen hast, mit Patienten unrelevant sein ?!) , und deren Behandlungen.

Ich brauche also nur ein Formular mit den Behandlungsschritten ( Abhängig von BehandlungsID) ! In einer Behandlung können ja mehrere Behandlungsschritte durchgeführt werden, also z.B kann für BehandlungsID 1 mehrere LeistungsID's möglich sein. - Habe somit einen zusammengefassten Primärschlüssel der BehandlungsID und LeistungsID ( LeistungsID sind = Behandlungsschritte, z.B Beratung, Untersuchung, usw.)
Hoffe du verstehst was ich meine.
Auf jedenfall soll in dem Formular wo man die Patienten und die Behandlungen verwaltet, durch eine Befehlsschaltfläche auf die Behandlungsschritte kommen, wo dann wie oben angegeben die Behandlungsschritte für die jeweilige ID verwaltet wird.
Deinen Ansatz habe ich nicht ganz verstanden. Ich habe auch noch nicht mit Kombinationsfeldern gearbeitet.
Aber wenn du noch weitere Tipps hierzu hast freue ich mich natürlich.

grüße

DF6GL

Hallo,


"Also ich habe auch noch ein anderes Formular, was fehlerfrei funktioniert. Es verwaltet die Patienten....   und deren Behandlungen.
"

Ja, ist doch ok... Das muß( sollte)  ja dann auch aus einem Hauptform zur Tabelle "tbl_Patienten" und einem Unterformular (UFO-Steuerelement) zur Tabelle "tbl_Behandlung" bestehen.

Wenn das Form allerdings nur ein Einzel-Form ist mit einer verknüpfenden Abfrage und das Form alle Felder aus beiden Tabellen besitzt, so solltest Du das in o. st. Konstruktion ändern.
(außer Du willst das Risko von evtl. nicht möglichen Datenaktuaklisierungen eingehen)

"falls ich richtig denke, dürfte das Formular, was du angesprochen hast, mit Patienten unrelevant sein ?!"

was meinst Du damit?




"In einer Behandlung können ja mehrere Behandlungsschritte durchgeführt werden, also z.B kann für BehandlungsID 1 mehrere LeistungsID's möglich sein. -"

ja, das sehe ich an den Beziehungen...   ;)



"Ich brauche also nur ein Formular mit den Behandlungsschritten ( Abhängig von BehandlungsID) ! "


Nein... Du brauchst 3 Formulare:

frmPatienten
frmBehandlungen
frmBehandlungsschritte



"Habe somit einen zusammengefassten Primärschlüssel der BehandlungsID und LeistungsID ( LeistungsID sind = Behandlungsschritte, z.B Beratung, Untersuchung, usw.)"

das ist ok, sagt aber nur aus, dass es zu einem Behandlungschritt nur eine Leistung geben kann.  (Wobei ich hier, falls ich das richtig interpretiere, die Tabelle "tblLeistungen" vermisse.)




"Auf jedenfall soll in dem Formular wo man die Patienten und die Behandlungen verwaltet, durch eine Befehlsschaltfläche auf die Behandlungsschritte kommen, wo dann wie oben angegeben die Behandlungsschritte für die jeweilige ID verwaltet wird. "

a)  Ruf das Form "frmBehandlungsschritte" mittels Docmd.Openform  beim (Doppel-) Klick auf das Feld "BehandlungsID" (oder welches Feld auch immer besser geeignet erscheint) im Form "frmBehandlungen" auf.


b) Integriere im Form "frmBehandlungen" ein UFO mit Anzeige des Endlos-Form  "frmBehandlungsschritte" im Fuss(!)-Bereich von "frmBehandlungen" und setz die Verknüpfungseignschaften auf die entspr. Schlüsselfelder ("BehandlungID") , wie vorher schon beschrieben.


c) Falls Du die  oben "angemeckerte" verknüpfende Abfrage für ein Form benutzt, das sowohl die Patienten- als auch die Behandlungs-Daten anzeigt, dann platziere dort  ein UFO mit Form "frmBehandlungsschritte" und verknüpfe enstprechen (wie oben beschrieben)



" ...durch eine Befehlsschaltfläche auf die Behandlungsschritte kommen"    ..."


Sub btnBehandlungsschritte_Click()
Docmd.OpenForm "frmBehandlungsschritte",,,"BehandlungID=" & Me!BehandlungID
End Sub



"Ich habe auch noch nicht mit Kombinationsfeldern gearbeitet."


Dann tu es...  ;)  Im "frmBehandlungsschritte sollte ja damit auch ein Leistung (aus Tabelle "tblLeistungen" ) einem Behandlungsschritt zugeordnet werden.


(btw:  nochmal:  benutz bessere Benamsungen (eindeutigere Bezeichnungen) , vermeide Sonder- ("?") und Leerzeichen sowie reservierte Wörter ("Name")  in Namen..  )

michael-e.93

Zitat von: DF6GL am April 30, 2011, 09:12:41

1 . was meinst Du damit?

2 . Nein... Du brauchst 3 Formulare:

frmPatienten
frmBehandlungen
frmBehandlungsschritte

3. das ist ok, sagt aber nur aus, dass es zu einem Behandlungschritt nur eine Leistung geben kann.  (Wobei ich hier, falls ich das richtig interpretiere, die Tabelle "tblLeistungen" vermisse.)





4  c) Falls Du die  oben "angemeckerte" verknüpfende Abfrage für ein Form benutzt, das sowohl die Patienten- als auch die Behandlungs-Daten anzeigt, dann platziere dort  ein       UFO mit Form "frmBehandlungsschritte" und verknüpfe enstprechen (wie oben beschrieben)



5. " ...durch eine Befehlsschaltfläche auf die Behandlungsschritte kommen"    ..."


Sub btnBehandlungsschritte_Click()
Docmd.OpenForm "frmBehandlungsschritte",,,"BehandlungID=" & Me!BehandlungID
End Sub



1. Also wofür brauche ich die Daten von dem Patient wenn ich diese bereits in einem anderen Formular hinzufügen kann ?? Ich weiß, habe ich noch nicht erwähnt. Aber eine Datenbank ist meiner Meinung nach schwer zu erklären. Besonders welchen die die Übersicht von der Datenbank noch nicht gesehen haben.

2. Ja, ich habe die Formulare. Ich habe sie Dir als Bild hochladen.
http://img27.imageshack.us/f/formulare.png/
Nebenbei nochmal die Beziehungen zur kompletten DB Übersicht :
http://img34.imageshack.us/i/beziehungen.png/

Ich hoffe die Bildqualität reicht einigermaßen zum "entziffern" aus.

3. Vielleicht habe ich mich falsch artikuliert, wenn LeistungsID und BehandlungsID in Behandlungsschritte ein zusammengesetzer PS sind, können für jede BehandlungsID eigentlich unendlich Schritte durchgeführt werden, es können nur nicht bei einer Behandlung 2 gleiche Leistungen durchgeführt werden ( z.B BH-ID 1 LeistungsID 3, BH ID 1 LeistungsID 2 usw, was nicht möglich wäre, wäre dass ein Datensatz exakt zwei mal identisch ist. Sehe ich das richtig? Wenn nicht, kläre mich bitte auf :) )

4. Ja sie dir am die Formulare an. Falls die Bildqualität nicht reicht lade ich sie einzeln hoch. Bitte sag mir dann genau was du meinst. Eventuell habe ich es ja bereits erledigt.

5. Das ist kein Problem die mache ich einfach mit Makros da ich mich mit der Programmiersprache VBA (noch) nicht auskenne.

Auf jedenfall danke ich schonmal für weitere Antworten und eure Hilfe.
grüße Michael

DF6GL

Hallo,



zu 1)

versteh Dich immer noch nicht.  Das frmPatient brauchst Du schon, um Patientien zu pflegen..  Vermutlich kann dieser Punkt gestrichen werden ;-)

Ansonsten sehen die Beziehungen ja vernünftig aus. Bei tbl_Patient zu tbl_Ort kann man geteilter Meinung sein..  Für einen Ort kann es mehrere PLZ geben und umgekehrt auch.



2)
die Forms kann ich schlecht erkennen. Ist aber auch nicht nötig, habe vorher beschrieben, wie die aussehen sollten.



3) 

habe ja nicht wiedersprochen ;-)



4) siehe 2)


5)  eigentlich sollte man Makros vermeiden...  Lies mal hier ein bisschen:  http://dbwiki.net/wiki/Hauptseite