Neuigkeiten:

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

Mobiles Hauptmenü

Unterformular speichert keine Daten (Stichwort Schlüsselfelder)

Begonnen von Parzelle387, Februar 22, 2020, 11:16:06

⏪ vorheriges - nächstes ⏩

Parzelle387

Guten Morgen,

nachdem ich mir eure Ratschläge zu Herzen genommen habe, hab ich meine Datenbank komplett umgestrickt.
Ich habe jetzt eine Tabelle Mandanten, Vorgänge und Rechnungen. Jede mit einem entsprechenden ID Feld
Zur Eingabe der Daten habe ich ein Formular mit UFo basieren auf einer Abfrage aus Vorgang & Rechnungen.
Bei Eingabe der Mandanten und Vorgangsnr funktioniert noch alles. Es wird brav ein Datensatz unter dem Mandanten mit entsprechender Vorgangsnr angelegt.
Springe ich dann aber ins UFo und möchte die Rechnungen eingeben, meckert er: das Datenbankmodul kann in der Tabelle "Vorgang" keinen Datensatz mit passendem Schlüsselfeld "Rechnungen.Vorgangsnr" finden.

Ich denke es braucht noch ein paar mehr Infos zur Lösung des Problems. Da ich nicht weis welche, hoffe ich auf eure Hilfe und nachfragen.

Vielen Dank schon mal


DF6GL

Hallo,

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


Vermutlich ist das UFO_Steuerelement nicht korrekt mit dem HFO verküpft..
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

Parzelle387

#2
OK, ich versuch das mal mit dem hochladen.

Wo würde ich die Verknüpfung des Steuerelements finden ?

Parzelle387

 et voilá

Ich weis das die Beschriftungen der Felder miserabel ist. :-\

DF6GL

Hallo,

wenn Du es weißt, warum änderst Du es nicht gleich??

(Sonder- und Leerzeichen vermeiden, eindeutige Feldnamen verwenden)

Die Beziehungen sind falsch.  Zudem fehlende Normalisierung der Mandanten-Tabelle (Kinder!).

Der Formularaufbau ist falsch.  (Beziehungsfelder  (Schlüsselfelder), unsinnige Benamsung, Datenherkunft gebunden an Abfragen. In dieser Phase sind Tabellen als Datenherkunft besser geeignet ).

Für für jede Tabelle ein Formular erstellen. FrmRechnungen als Endlosform, wird im HFO (frmVorgang) mit einem UFO-Steuerelement angezeigt.
Der Mandant wird in frmVorgang mittels Kombifeld ausgewählt.


Die Beziehungen sagen aus: 
Ein Mandant besitzt mehrere Vorgänge.
Einem Vorgang werden mehrere Rechnungen zugeordnet.


In jedem Code-Modulkopf "Option Explicit" hinzufügen.


In der anhängenden DB sind nicht alle Punkte behandelt.



Wenn schon, dann so:
et voilà     ;D
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

Parzelle387

#5
Oje,
ehrlich gesagt bin ich jetzt nicht wirklich schlauer, ausser das wohl alles falsch ist was falsch sein kann :'(.

Ist das mit dem Kombifeld für die Mandanten nicht bisschen unglücklich bei vielen Mandanten ?

Vielen Dank fürs ändern.
Aber die Rechnungen werden trotzdem nicht unter dem Vorgang gespeichert, oder ?
Wenn ich Tabelle Mandanten reinschaue, dann ist zwar ein Vorgang da, aber wenn ich den mit  +"erweitern" will, fragt er nach einer Vorgangsnr.

DF6GL

#6
Hallo,

und wo hakt es denn?

ZitatIst das mit dem Kombifeld für die Mandanten nicht bisschen unglücklich bei vielen Mandanten


Was heißt denn "unglücklich"?

Womit wärst Du denn glücklich?

Stimmt denn die Beziehungslogik?:

Ein Mandant kann mehrere Vorgänge haben.
Ein Vorgang kann mehrere Rechnungen haben.

Wenn so, dann ist auch die Reihenfolge (Hirachie)der zu verknüpfenden Formulare so:

HFO "frmMandanten" mit UFO "frmVorgang" mit weiterem UFO "frmRechnung"

oder
HFO "frmVorgang" und Auswahl eines Mandanten (Kombifeld) und mit weiterem UFO "frmRechnung".

Soweit ich alles verstanden habe, bekommst Du "Rechnungsstapel" (--> Vorgänge)  zu einem Mandanten, die auch als Stapel abgearbeitet werden.
Also ist diese Konstellation mit den Tabellen abzubilden. Und das geht mit meinem Vorschlag.
Die Anzahl der Mandanten ist doch unerheblich... Die Mandanten müssen eh vorher eingepflegt werden.

Zitat
Wenn ich Tabelle Mandanten reinschaue, dann ist zwar ein Vorgang da, aber wenn ich den mit  +"erweitern" will, fragt er nach einer Vorgangsnr

Öffne die Tabelle "Vorgang" in der Entwurfsansicht und ändere im Eigenschaftenblatt bei "Verknüpfen von" den Namen in "Rech_VorgangsID".
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

Parzelle387

Mit unglücklich meine ich bei sagen wir 50 Mandanten wäre das Kombifeld ja ziemlich lang.
Ich würde die Mandantennummer halt lieber eingeben. Und um sicher zu gehen ob es der Richtige ist, dann der Name daneben.
Die Beziehungslogig stimmt soweit,
Mandant 1 -> Vorgang 1 -> Rechnung1
                                    -> Rechnung 2
                                    -> Rechnung n
                -> Vorgang 2 -> Rechnung 1
                                    -> Rechnung 2
                                    -> Rechnung n
Mandant 2 dann genauso....

Zitat von: DF6GL am Februar 22, 2020, 15:09:03
HFO "frmVorgang" und Auswahl eines Mandanten (Kombifeld) und mit weiterem UFO "frmRechnung".
Wäre mir lieber  ;)

DF6GL

Hallo,

irgendwie verwirrst Du mich..

ZitatMit unglücklich meine ich bei sagen wir 50 Mandanten wäre das Kombifeld ja ziemlich lang.
Ich würde die Mandantennummer halt lieber eingeben. Und um sicher zu gehen ob es der Richtige ist, dann der Name daneben.

Genau so geht es doch.. ???
gib in das Kombifeld die Mandantennummer ein und das Kombi springt sofort zum entspr. Mandanten.. 


ZitatWäre mir lieber

??? ??? ???

genau so ist es doch im "frmVorgang"
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

Parzelle387

Achso,
dann hab ich das mit dem Kombinationsfeld falsch verstanden. Ich dachte da kann man nur aus den Feldern auswählen die eingetragen sind. 8)

Liegt wahrscheinlich daran, das ich kurz vor dem verzweifeln bin  ;D

Ich werd mal nen päusschen einlegen und nachher nochmal "neu" dran gehen.... ;)

Aber vielen vielen Dank bis hier.

MzKlMu

Hallo,
die komplette Mandantentabelle sollte man in die Tonne treten. Entschuldigung.  ;D
Die Tabellen für Vorgang und rechnung sind OK.

Alle Personen egal ob Mandant, Betreuer, Kind, Lebenspartener, Ehepartner gehören in eine Tabelle mit ihren personenbezogenen Daten. In die Tabelle kommt ein Feld zur Kennzeichnung der Personenart. Mandant, Betreuer oder Andere.
Die Ja/Nein Felder für den Familienstand können ersatzlos entfallen, da doppelt gemoppelt. Gibt es ein Datum bei verheiatet, ist die Person verheiratet, wozu dann noch ein Ja/Nein Feld. Das gilt sinngemäß für verwitwet und geschieden.
In einer weiteren Tabelle in der der Primärschlüssel der Personentabelle 2x als Fremdschlüssel aufgenommen wird, kannst Du den Mandanten die für ihn relevanten Personen (Partner, Kinder, Betreuer) zuordnen.
Dann hat man eine Personentabelle. Dieser dann einen Personentabelle kann man über eine n:m Beziehung die Kommunikationsarten mit den entsprechenden Einträgen zuordnen.
Dann legt man ein Hauptformular an zur Anzeige der Personen.
In dieses Hafo kommt eine Registerseite mit einigen Registerseiten in denn man über Ufo die Kinder, die Partner, den Betreuer und die Kommunikationsdaten übersichtlich auf einen Blick anzeigen kann. Hier können die Daten auch erfasst und bearbeitet werden.

Weiterhin wird je eine Tabelle benötigt für Ort mit PLZ, OrganisationBetreuer und Krankenkasse.

Hier gibt es noch sehr viel zu tun.

Wenn Du die DB umstrukurieren willst, mache ich Dir das mal. Aber nur dann, wenn Du dann so weiter machst.
Lasse es mich wissen.
Gruß Klaus

Parzelle387

Klar würde ich tun, möchte ja das es funktioniert.
Bin ja für jede Hilfe dankbar.
Vielleicht kann ich dir dann noch paar Infos und Hintergründe senden (per PN ) wenn ok ist ?

MzKlMu

Hallo,
ja, Informationen zu den Hintergründen wären gut.
Gruß Klaus

MzKlMu

#13
Hallo,
was lange währt wird endlich zu einem Vorschlag. Ob es gut wird, wird man sehen.

Du wirst Die DB nicht mehr erkennen. Da ist alles umgekrempelt.

Alle Personen werden in einer Tabelle aufgenommen, egal ob Mandant, Betreuer, Kind usw. usw. Nur die reinen Personendaten.
Dann gibt es eine Tabelle für die Zuordnungen. In dieser Tabelle ist der FS zum Mandant und der FS zu einer zugeordneten Person gespeichert. Je Zuordnung gibt es 2 Datensätze, ein DS von Mandant zu Zugeordneter Person und ein DS umgekehrt. Der umgekehrte DS wird automatisch erstellt, wenn eine Zuordnung getroffen wurde.
Dann wurde auch die Kommunikation geändert, da alle Personen in einer Tabelle sind, könne alle Kom.Daten zu einer Person in einem Unterformular angezeigt werden.
Das gleiche gilt sinngemäß für die eingereichten Rechnungen.
Auch die Adressdaten werden in einem Ufo erfasst. Zu einer Person können beliebig viele Adressen gespeichert werden, denn Adressen können sich ändern und die alten Adressen sollten erhalten bleiben. Die Aktuelle Adresse erhält einfach einen Haken.

Alle Dateneingaben/Änderungen erfolgen im Formular ,,Erfassung" das dann in Registern verschiedene Unterformulare zeigt. Es kann nur dieses eine Formular ,,Erfassung" verwendet werden, die anderen Formulare können nicht eigenständig geöffnet werden.
Die Dateneingaben müssen über diese Formulare gemacht werden. Auch müssen die Buttons genutzt werden. Im Formular "Erfassung" hast Du links das lange Listenfeld mit dem Du problemlos jede Person findest und anzeigen kannst.

Es hört sich jetzt alles kompliziert an, aber wenn Du es verstanden hast, ist es einfach.
Es gibt auch relativ wenig VBA Code den ich aber etwas kommentiert habe.
Es ist unerlässlich, dass Du die Zusammenhänge verstehst, sonst wirst Du an dieser DB mal nichts selbständig ändern können, also ran ans Werk.

Schaue Die vor allem mal die Beziehungen an. Da gibt es z.B. die Tabelle ,,tabPersonen_1". Das ist ein automatischer Klon der Tabelle ,,tabPersonen". Das ist notwendig, um 2 Fremdschlüsselfelder in die Tabelle aufnehmen zu können.

Dann schaust Du mal die Formulare im Entwurf an.

Viel Spaß beim Stöbern. Lege Dir sicherheitshalber gleich mal eine Kopie an zum Prüfen und Verstehen, damit da nix schief geht.

Bei Fragen bitte melden.
Gruß Klaus

Parzelle387

Hallo,

sieht echt super aus. Ich denke ich komme ganz klar. Den Sinn und die Verknüpfungen habe ich verstanenden denke ich. Ich habe auch schon ein Reiter erfolgreich hinzugefügt. Der besteht aber auch nur aus drei Krontrollkästchen.
Jetzt bin ich gerade damit beschäftigt, einen weiteren Reiter für die Kostenträger einzubauen.
Hier dachte ich an zwei Tabellen. Da es 2x immer die gleichen etwa 10 Kostenträger in unterschiedlichen Kombinationen sind. Einen Reiter Kostenträger in dem man dann die entsprechenden 2 auswählt.