Januar 24, 2021, 03:39:18

Neuigkeiten:

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


Keine Eingabe in Unterformular möglich

Begonnen von Paddy24, Januar 04, 2021, 19:13:25

⏪ vorheriges - nächstes ⏩

Paddy24

Hallo zusammen,

ich arbeite derzeit an einer Datenbankanwendung mithilfe eines Access-Buches.

Jetzt habe ich ein Formular samt Unterformular erstellt, allerdings lässt sich in dem Unterformular nichts eintragen/eingeben.

Meine erste Vermutung lag darin, das die Abfrage die Beziehung zum Hauptformular nicht hat, aber nachdem ich diese der Abfrage hinzugefügt hatte ging es immer noch nicht.

Ich füge mal einen Screenshot bei, ich bin mir nicht sicher ob dies zeigt, woran es liegt.

Sie dürfen in diesem Board keine Dateianhänge sehen.

Vielen Dank

Pat

DF6GL

Hallo,

wofür ist die Abfrage?



Setze den Tabellennamen "tblPerson" in die Datenherkunft-Eigenschaft des HFO ein und den Tabellennamen "tblKontakt_Person"  in die des UFOs.

Verknüpfe dann das UFO-Steuerelement (Eigenschaften "Verknüpfen von/nach") über die Schlüsselfelder.

Die Auswahl des Kontakt-Typs realisierst Du mit einem Kombifeld.

steffen0815

Hallo,
ich vermute ein Missverständnis.

Stehen 2 Tabellen in einer 1:n Beziehung, steht eine Tabelle (1) (bzw. die Abfrage darauf) im Hauptformular und die andere Tabelle (n) im Unterformular.
Die beiden Formulare werden miteinander verknüpft.

Ich vermute, dass du in der Abfrage des Unterformulars die Tabelle des Hauptformulars mit aufgenommen hast.
Gruß Steffen

Paddy24

Vielen Dank schonmal für die tolle Hilfe,

so richtig komme ich noch nicht dahinter, das gesagte von @DF6GL funktioniert zwar, zeigt mir dann aber "nur" die Daten in einer Tabellenform aka Excel/Access an und nicht mehr als Formular.

Einmal kurz zum jetzigen Aufbau, vielleicht gehe ich das auch zu kompliziert an:

Ich habe ein Suchen-Abfrageformular womit ich Personen suchen kann. Neben jeden Eintrag habe ich einen Button zum Öffnen des Datensatzes (Siehe Bild abfPersonSuche).

Öffne ich jetzt einen Datensatz, öffnet sich ein Formular (frmTestPersonendaten) zum einsehen und bearbeiten von Personendaten, wobei einmal im HFO ein Registersteuerelement ist und dann in dem Registerelement des HFO noch ein Registerelement als Unterformular (ufoRegister), das ebenfalls die Unterformulare frmKontakt_Person und ufoRegister_Adressen beinhaltet.

Den Vorschlag von @DF6GL habe ich in dem Unterformular "ufoRegister" angewandt, was wie schon erwähnt auch funktioniert, allerdings nicht in dem Format von den unter-Unterformularen.

Ich habe das Gefühl ich gehe die Sache zu kompliziert an, allerdings kann ich kein Register in einem Register einfügen ohne das das Unterregister auf allen Seiten des Hauptregisters auftaucht.

Entschuldigt bitte die Namenskonvention, ich probiere derzeit wild umher :S

Sie dürfen in diesem Board keine Dateianhänge sehen.

DF6GL

Hallo,

du benötigst nur zwei Formulare:

frmPersonen und frmKontaktpersonen

frmPersonen wird als Einzelform ausgeführt, frmKontaktpersonen als Endlosform.


Das Suchen-Feld ist Bestandteil des HFO (z. B. im Formularkopf platziert.)



Zitatallerdings nicht in dem Format von den unter-Unterformularen.

Was meinst Du damit?


Ansonsten lad die DB mal hier hoch, komprimiert/repariert und gezippt.



Paddy24

Hallo,

also ich möchte ja eine Personenbearbeitungsmaske / Formular haben, wo ich ein Registerelement habe und die Register dann im Grunde verschiedene Formulare beinhalten.

Mein Designkonzept sieht halt so aus, das der Benutzer über das Startformular die Personensuche auswählt und dort dann den gewünschten Datensatz in dem Personenbearbeitungsformular bearbeitet bzw prüft.

Dazu habe ich dann jeweils die Tabelle "tblPerson", die dann ein paar Fremdschlüssel enthält und die jeweiligen Stammdatenfelder.

Es gibt dann noch eine bzw. 2 Tabellen für Kontaktinfos, einmal eine Zwischentabelle mit dem jewiligen Fremdschlüsseln zu der tblPerson und den Kontaktwert und Bemerkung. Die andere Kontakttabelle beinhaltet die Kontakttypen, wie zb. E-Mail, Telefon, usw. Diese Tabelle möchte ich dann als Kombobox nutzen.


Wäre es dir auch recht, das ich dir die DB per PN schicke, derzeit funktionieren die Formulare nur nicht wirklich?

Habe etwas Probleme mit dem Suchenformular, denn wenn ich dort über den Öffnenbutton einen Datensatz öffnen will, dann orientierte sich die Beziehung anhand des Names, was blöd ist, wenn es mehrere gleiche Namen gibt. Das anhand der ID zuzuordnen bekomme ich nur hin, wenn ich in der Abfrage die Person_ID hinzufüge und auf dem Bearbeitungsformular das Feld Person_ID unsichtbar drauf lege, was wohl aber nicht optimal ist.

Ich hab seit Jahren eher mit PowerShell, VB.net, VBA und XML gearbeitet, jetzt will ich mich an das Thema DBs rann machen, aber die ganze Beziehungsgeschichte ist noch nicht so einfach  :-\ 

 

DF6GL

Hallo,

warum PN? Lad die DB hier hoch wie erklärt, dann sehen auch andere die Situation

Paddy24

Hallo,

anbei die DB.

Wie gesagt, mit den Formularen bin ich mehr im Trial & Error. Bei den Tabellen hoffe ich alles soweit richtig gemacht zu haben, was Normalisierung angeht und Beziehungen

Sie dürfen in diesem Board keine Dateianhänge sehen.

DF6GL

Januar 06, 2021, 10:19:41 #8 Letzte Bearbeitung: Januar 06, 2021, 10:23:44 von DF6GL
Hallo,

die Beziehungen sind prinzipiell richtig aufgebaut. Bedenken habe ich allerdings an der Beziehungslogik.

Du solltest die Bedeutung der Beziehung zwischen tblPerson-tbl_Gesund_Zeitraum-tblGesundheitsdaten näher erklären.

Ich kann mir jetzt nicht vorstellen, dass ein bestimmter "Gesundheits"-Datensatz zu vielen unterschiedlichen Personen und mehreren Zeiträumen zugehörig ist.

Desgleichen die 1-n-Beziehungen bei tblGesundheitsdaten zu tbl_Symptom_Zeitraum und tblAbstrich.


Nur am Rande: Die Führung von Adressen (ohne Hausnummer) in einer separaten Tabelle sehe ich in diesem Fall eher als lästig an.  Vermutlich gibt es nur eine geringfügige Anzahl von gleichen Adressen, an denen sich mehrere erfasste Objekte (Personen, Krankenhaus) befinden.  In diese Fäll nähme ich die entstehende Redundanz in Kauf.





Weiterhin ist mir nicht so klar, wie Du Dir die visuelle Darstellung der Personen mit den Gesundheitsdaten vorstellst.


Entferne erst mal alle Formulare und die Abfrage.  Nach der Klärung der o. g. Beziehungen solltest Du:

Formulare für jede Tabelle (Datenherkunft: Tabellenname) erstellen.  Endlosforms für die "Nachschlage"-Tabellen, die relativ wenige Felder haben, ansonsten Einzel-Forms.

Für die erwähnten HFO/UFO-Konstruktion ist zunächst die evtl. zu korrigierende Beziehungslage abzuwarten.

Und: Erst wenn die Formularkonstuktionen  die korrekte Erfassung und Bearbeitung der Daten zulässt, kann an "Hilfsmittel" wie Personensuche etc. gedacht werden.


Weiterer Tipp:

Ordne die Tabelle im Beziehungsfenster so an, dass die 1-Tabellen immer links der zugehörenden n-Tabellen und in geordneten Spalten untereinander zu liegen kommen. Dann werden die Datenverhältnisse besser durchschaubar.

Paddy24

Wow vielen Dank für die vielen nützlichen Hilfen und Tipps.

Um mein Vorhaben etwas aufzuklären:

Eine Person kann mehrere Gesundheitsdatensatzzeiträume haben.
Ich muss zugeben das genau bei dieser Beziehung und der Adresse ich etwas Kopfschmerzen hatte.

Meine erste Überlegung war, das eine Person einen Gesundheitsdatensatz hat wo dinge wie Hausarzt, Erkrankung usw usw vorkommen. Und dann eine Tabelle Krankheitsverlauf, wo kam dann sich ändernde Daten einträgt, wie Symptome, Zustand, ob Stationär usw usw.

Die Zielidee ist, das man in den Reiter Gesundheitsdaten geht, dort dann einen neuen Zeitraum eingibt und die Felder bearbeitet die sich verändert haben, sodass man im Endeffekt eine kleine Historie hat was sich über die Zeit getan hat. Daher auch die Überlegung, ob überhaupt weitere Zeiträume wie zb. für Symptome überhaupt notwendig etc.


Wegen der Adresse habe ich auch lange hin und her überlegt, da ich letztendlich ein Straßenverzeichnis importieren möchte, sodass der Benutzer dann eine Straße samt Ort etc auswählen kann und keinen "Blödsinn" eingibt.

Nichtsdestotrotz soll er auch die Möglichkeit habe, das wenn seine Adresse nicht im Straßenverzeichnis vorhanden ist (zb. Gemeindefusion) er die Möglichkeit hat eine Adresse hinzuzufügen.

Dabei ist mir das beste was mir einfallen konnte mit der Hausnummer, diese in den jeweiligen Personen zu speichern.

Nach der Logik: Eine Person kann eine Adresse haben, eine Adresse kann mehrere Personen haben.

Ich hoffe ich konnte etwas Licht in meine Vision der Datenbankanwendung bringen.


Vielen Dank im Voraus.

Beste Grüße
Pat


DF6GL

Hallo,

ZitatEine Person kann mehrere Gesundheitsdatensatzzeiträume haben.

Ok, dann realisiere das auch so:
1-n-Beziehung zwischen tblPerson und tblGesundheitsdaten.  Die Zeitraum/punkt-Angaben werden in tblGesundheitsdaten übernommen.
Die n-Beziehung zu tblGesund_Zeitraum entfällt.  Welche Aussagekraft hat tblGesund_Zeitraum? 

Die tblGesundheitsdaten muss aufgedröselt werden in Grunddaten, die einmalig erfasst werden und gleich bleiben (z. B. AufnahmeDaten für eine Klinik).  Für andere Daten, die eine historische Änderung darstellen (z. B. Anamnese, Medikamentierung, Herzüberwachung, Labor) , sind sinngemäße n-Tabellen zu erstellen, so dass man ein "FollowUp" erreichen kann.


Diese einzelnen Historie (Followup)-Tabellen werden als UFOs auf Registerseiten angezeigt(, um der Formular-Konstruktion schon mal vorzugreifen)








Paddy24

OK ich habe jetzt erstmal alle Formulare gelöscht und mich nochmal an die Tabellenlogik und Beziehungen rann gemacht.

Dabei habe ich die Tabelle Person_Gesund entfernt, da ich die Zeiträume mit in der Tabelle Gesundheitsdaten drin habe, nach dem Motto: Eine Person kann mehrere Gesundheitsdatensätze haben.

Dazu habe ich noch die Beziehung zu der Tabelle Risikofakten geändert, da es hier heißt: Ein Gesundheitsdatensatz kann mehrere Risikofakten haben. Das wären Daten die man nur einmal eingibt, daher ohne Zeitraum. Hier brauche ich aber eine Zwischentabelle, die dann die Beziehung zwischen der tblGesundheitsdaten und tblRisikofaktoren regelt: tblGes_Ris, die dann die jeweiligen Fremdschlüssel beinhaltet.

Für die Symptome das gleiche, nur das dort noch ein Zeitraum mit dabei ist, da diese sich über den Krankheitsverlauf ändern können, bis keiner mehr da ist.

Ich habe mal ein Screenshot der aktuellen Beziehungen mit angehängt.

Gibt es was, was man noch optimieren könnte? Oder schaut es jetzt erstmal ganz gut aus?

Sie dürfen in diesem Board keine Dateianhänge sehen.


Beste Grüße
Pat

DF6GL

Hallo,


auch hier gilt:

Platziere die 1-Tabellen jeweils links von den zugehörigen n-Tabellen, so wie ich es in meinem vorletzten Post gezeigt habe.

Paddy24

So müsste das jetzt passen

Sie dürfen in diesem Board keine Dateianhänge sehen.


DF6GL

Hallo,

ja, schon besser..  ;)

Ich kann allerdings jetzt nicht sagen, ob tblGesundheitsdaten auch wirklich das liefert, was Du erwartest.

Dann mach Dich mal an die Formulare (Datenherkunft jeweils der Tabellenname).

Vorschlag:




frmPerson  Einzelform

frmKontakt_Person (Endlosform) als UFO in frmPersonen

frmGesundheitsdaten Einzelform als UFO in frmPersonen
                 mit 3-seitigem Registersteuerelement für frmAbstrich, tblSymptom_Zeitraum  und tblGes_Ris (alles Endlosforms)




Alle Fremdschlüssel zu den 1-Tabellen als Kombifelder auslegen.


Weiterhin:

Alles Endlosforms, evtl. außer frm_Gesund_Krankenhaus.