Januar 20, 2021, 14:13:50

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,

super dann fange ich erstmal mit den Formularen an und wir schauen später ob Tabellenseitig alles passt.

Sollen die Formulare samt alle Felder (außer Schlüsselfelder) über den Formular-Assistenten generiert werden oder ist es sauber (durch mehr Kontrolle) dies über den Formularentwurf zu tun?

Und eine Frage hätte ich, müssen Fremdschlüssel generell als Pflichtfelder gekennzeichnet/eingestellt werden oder kommt das immer auf den Usecase drauf an?


Vielen Dank im Voraus.
Pat

MzKlMu

Hallo,
Zitat von: undefinedsuper dann fange ich erstmal mit den Formularen an und wir schauen später ob Tabellenseitig alles passt.
Nein, auf keinen Fall. Erst das Datenmodell mit einer stimmigen Tabellenstruktur und dann erst die Formulare.
Wenn Du erst die Formulare machst und dann die Tabellenstruktur ändern musst, kannst Du die Formulare in die Tonne treten.

1. Tabellen erstellen mit Primär und ggf. Fremdschlüsselfeldern
2. Beziehungen mit referentieller Integrität einrichten
3. Tabellen mit Sieldaten mal testen
4. Wenn es passt, dann die Formulare

Fremdschlüssel müssen keine Pflichtfelder sein, die können auch leer (NULL) bleiben.
Mit NULL ist nicht die Zahl gemeint.
Gruß
Klaus

Paddy24

Danke,

Ich habe gerade beim prüfen der Beziehungen noch bemerkt, das ich die Tabelle tblQuarantaene ganz vergessen hatte einzubinden.

Dann werde ich die Tabellen jetzt erst einmal mit Zieldaten füllen und das ganze so testen.

Paddy24

Januar 08, 2021, 18:21:21 #18 Letzte Bearbeitung: Januar 08, 2021, 19:14:05 von Paddy24
Nach etwas Überlegung sehe ich keinen Grund, die tblGesundheitsdaten so zu übernehmen und würde diese umbenennen in tblZusatz. Alle anderen Tabelle, die vorher in einer Beziehung mit tblGesundheitsdaten lagen kann ich auch gleich an die tblPerson verknüpfen.

Dazu gesellt sich dann noch ein Zeitraum für den Personenstatus um nachverfolgen zu können, wann dieser Erkrankt und Genesen ist.

Ich muss jetzt nur noch irgendwie ein Feld reinbekommen, woran ich festmachen kann, welche Erkrankte Person welche Kontaktpersonen hatte bzw. welche Kontaktperson von wem angesteckt wurde.

Visuell stelle ich mir das so vor, das man in einem Reiter in den Gesundheitsdaten per Hinzufügenbutton Personen hinzufügt, die den Status Kontaktperson automatisch bekommen und die Verknüpfung zu dem Erkrankten.

Anbei nochmal mein Umstrukturierungsplan skizziert:

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


Edit: Wobei ich gerade beim genaueren hinsehen nochmal überlegen muss welche Zweck die Tabelle Zusatz überhaupt erfüllen soll. Da sie eigentlich in einer 1:1 Beziehung mit der Person steht.

Edit 2: Dann sieht das ganze jetzt so aus. Habe auch gleich noch der Arbeitsstelle und dem Hausarzt Kontaktdaten ermöglicht:

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

Paddy24

Januar 09, 2021, 19:05:29 #19 Letzte Bearbeitung: Januar 09, 2021, 19:37:13 von Paddy24 Grund: voriges Problem gelöst
Hallo zusammen,

ich wollte jetzt mal versuchen ein einfaches Personenformular zu erstellen, einfach um zu schauen ob die Daten auch angezeigt werden. Aber irgendwie zeigt er mir gar nichts an, also noch nicht mal die textboxen zu den Feldern:

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

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

Woran kann das liegen?

Ich habe die Felder über die Option "Vorhandene Felder hinzufügen" hinzugefügt. Die Formulare haben auch die richtige Tabelle als Datensatzquelle :S

Edit: OK ich hatte einen Denkfehler, jetzt funktioniert es soweit. Allerdings versuche ich gerade ein Listenelement das die Zeiträume hat einzufügen, aber anstatt nur den Zeitraum für die obige Person anzuzeigen, zeigt es alle an.

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


DF6GL

Hallo,

Bilder von den Formularen nützen nichts in diesem Fall.

Lad die DB mal hier hoch, komprimiert und gezippt.


Paddy24

Hallo,

anbei die DB.

Ich hab es erst nochmal selber versucht, aber habe es nicht hinbgekommen. Das Listenfeld zeigt einfach alle Zeiträume an und nicht zu der ausgewählten Person.
Sie dürfen in diesem Board keine Dateianhänge sehen.

DF6GL

Hallo,

die Listenfeld-Anzeige muss gefiltert werden und die Datensatzherkunft des Listenfeldes sollte so heißen:


SELECT tblquarantaene.qua_id, tblquarantaene.qua_von, tblquarantaene.qua_bis FROM tblquarantaene WHERE per_id_f =[].[per_id_f]
Dazu eine Ereignisprozedur "Beim Anzeigen" im Form frmQuarantaene:


Option Compare Database
Option Explicit

Private Sub Form_Current()
Me!Liste4.Requery
End Sub

Paddy24

Kann ich den SQL Code auch in einem richtigen Editor eingeben in Access oder geht das nur über das Eigenschaftenblatt bei Datensatzherkunft in dem kleinen Feld?

DF6GL

Hallo,

stell die Schreibmarke in das Eigenschaftenfeld und drück Shift-F2

Paddy24

Januar 11, 2021, 12:59:51 #25 Letzte Bearbeitung: Januar 11, 2021, 13:08:30 von Paddy24
Hallo,

Soweit hat alles super funktioniert. Jetzt bin ich allerdings auf ein kurioses Problem gestoßen.
Hatte die DB als neue Version abgespeichert und dann Access neu gestartet (komprimieren und reparieren).

Nachdem ich dann das Formular Person wieder öffne, werden mir zwar 4 Datensätze angezeigt, aber 3 mal ist es nun die Person mit der ID 2 und einmal die Person mit der ID 3. Die Person mit der ID 1 wird gar nicht mehr angezeigt?!

anbei die DB.

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


EDIT: OK Problem doch selber gefunden. Dadurch das ich in dem Formular für die Person das Personen_Status_Zeit Formular drin hatte und dies dann gelöscht habe, verblieb trotzdem noch die Abfrage für das Formular Person die gleiche.

Ich habe also nun in der Abfrage die Tabellen zu dem Status und Zeitraum des Personen_Statuses gelöscht und es scheint wieder richtig zu funktionieren.

Ich hatte vorher versucht ein Formular für den Personenstatus im gleichen Format wie das Formular Quarantäne zu erstellen, was mir aber irgendwie nicht gelang (Hatte ich dort einen Zeitraum ausgewählt haben sich nicht die Felder entsprechend gefüllt)

Paddy24

Hallo,

ich habe jetzt eine Suchenmaske erstellt und möchte nun über einen Öffnen-Button den jeweiligen Datensatz in der Personenmaske anzeigen lassen.

Muss dazu nun auf dem Formular frmPerson das Feld ID unsichtbar hinterlegt werden oder wie würde man das Öffnen nach ID angehen?

Erstelle ich einen Button mithilfe des Assistenten, dann öffnet dieser das Formular anhand vom Namen, welcher aber öfters vorkommen kann.

Falls die aktuelle DB benötigt wird, lade ich sie gerne hoch.

Vielen Dank im Voraus.

DF6GL

Hallo,

ZitatFalls die aktuelle DB benötigt wird, lade ich sie gerne hoch.

wäre von Vorteil...

Paddy24

Januar 13, 2021, 16:52:41 #28 Letzte Bearbeitung: Januar 13, 2021, 17:11:20 von Paddy24
So ich habe jetzt etwas rumprobiert und zumindest funktioniert es erstmal, allerdings bin ich mir nicht sicher ob es so der richtige Weg ist oder ob es nicht einen besseren gibt.

Auch habe ich mal ein provisorisches Start Formular hinzugefügt um das anlegen von neuen Personen zu testen.
Dazu öffne ich das Formular frmPerson und Filter das auf die ID = 0, wie hier in einem anderen Thread beschrieben.

Den Button "Neu Anlegen" lasse ich dabei nur anzeigen, wenn im Feld "per_name" etwas drin steht um im Grunde dem Programm zu sagen, es handelt sich um eine neue Person, wenn der Name beim öffnen nicht im Feld per_name steht.

Was derzeit noch nicht so gut funktioniert ist, das wenn ich einen Button hinzufüge, dieser per Assistent als Makro erstellt wird, die Funktion "Makro in VBA umwandeln" klappt bei mir leider nicht.
 
Was auch noch nicht geht, er zeigt mir nicht die neu hinzugefügten Personen in der Suche an, ich gehe mal davon aus, weil diese keine PLZ und Ort haben und dies aber in dem Formular frmPersonSuche abgefragt wird :S

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

EDIT: Noch eine Sache, ich möchte auch in dem Register eine Seite haben wo man drüber nachvollziehen kann, mit welchen Personen die Person, die ich gerade bearbeite, Kontakt hatte. Dazu habe ich der tblPerson ein neues Feld "Quelle" hinzugefügt, dort kommt dann die ID der Person rein, wo sich diese Person von angesteckt hat.

D.h. Wenn ich eine Person bearbeite, dann habe ich das Register Kontaktpersonen und dort dann erstmal eine leere Liste, mit einem Plus Button oder so kann ich dann Personen hinzufügen, meistens werden es neue sein, die ich dann in einer Maske anlegen kann und die automatisch den Status "Kontaktperson" bekommt + in dem Feld "Quelle" die ID der Hauptperson.

Ich bin mir allerdings noch nicht so ganz sicher, wie das mit dem ganzen hinzufügen funktionieren soll bzw kann.

DF6GL

Hallo,

die 1-Tabellendaten müssen allesamt zuerst erfaßt werden, bevor ein n-Tabellen-Datensatz erfaßt werden kann, soll heißen, zuerst Arbeitsstelle Geschlecht, Hausarzt etc. und erst dann eine Person.

frmArbeitsstelle kann nicht als Unterform für diesen Zweck in frmPersonen verwendet werden.

Die Daten aus den 1-Tabellen ( alle 1-Tabellen, die im Bezeihungsfenster links von tblPerson stehen) müssen mittels Kombis aus den 1- Tabellen ausgewählt und zugeordnet werden.

Ein Start-Form mit Neu Anlegen-Button ist eher hinderlich.  Die Erfassung einer neuen Person wird einfach im frmPerson mittels Button-Klick angestoßen.  Von Makros und der Konvertierung in VBA-Code ist abzusehen, weil unnötig und "durch die Brust ins Auge" -Methode.

Ebenso ist ein Personen-Suchform überflüssig.  Eine solche Suche kann im frmPerson leicht und direkt erfolgen.

Mit den "Kontaktpersonen" komme ich im Moment nicht klar, wie Du Dir den Ablauf vorstellt.   Kann es immer nur eine "Kontaktperson" ("Infizierender") geben oder kommen auch mehrere Personen in Frage?


Bei einer Person braucht es lediglich ein Kombifeld, mit dem die ansteckende Person ausgewählt und deren ID in das Feld "Quelle" ( das Feld heißt anders in der Tabelle....) abgelegt wird.


Kommen mehrere Personen in Frage, so braucht es eine weitere Tabelle ("tblInfizierer")  in die alle Personen abgelegt werden, die die aktuelle Person infiziert haben (könnten).

Zum Formular-Layout:

Erstelle für alle Tabellen Formulare (Datenherkunft Tabellenname), je nach praktischem Ermessen Endlos- oder Einzel-Form.
 
Erstelle das frmPersonen so:

Datensatzherkunft: tblPerson

mit

-allen Felder aus dieser Tabelle

-einem Registersteuerelement mit derzeit 7 Seiten.. Auf jeder dieser Seiten wird ein UFO-Steuerelement  eingebaut, das die Formulare der N-Tabellen bezgl. tblPerson anzeigt.


Vergiss nicht, die Eigenschaften "Verknüpfen von/nach" bei jedem UFO-Steuerelement korrekt auf die jeweiligen Schlüsselfelder einzustellen, sofern sie nicht schon von UFO-Assistenten gesetzt worden sind.



Die DB muss zuerst mit Hilfe der Formulare und dem Durchlaufen der DS richtige Ergebnisse anzeigen. Erfassen und Pflege in frmPersonen muss ohne weiteres Zutun (Code) korrekt möglich sein.


Danach kann "mehr Konfort" angegangen werden.