collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 91
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 14160
  • stats Beiträge insgesamt: 68645
  • stats Themen insgesamt: 9248
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: mit Zeiträumen arbeiten  (Gelesen 1659 mal)

Offline esskah

  • Newbie
  • Beiträge: 7
mit Zeiträumen arbeiten
« am: Januar 03, 2019, 17:42:18 »
Hallo liebe Gemeinde,

ich habe noch relativ wenig Erfahrung mit MS-Access, konnte aber mit Hilfe von Tutorials eine ansehnliche Datenbank aufbauen, die zur Mitgliederverwaltung unseres Vereins dient. Aktuell habe ich ein Problem mit einer Abfrage. Unsere Mitglieder melden sich immer wieder mal aktiv, oder passiv und ich möchte diese Zeiten bequem eintragen und auswerten können, bzw. soll daraus der Mitgliedsstatus "aktiv" oder "passiv" erfolgen.

Zur Zeit habe ich in einer Mitgliedschafts-Tabelle je 7 Felder für Aktivzeit und Passivzeit, das ist aber recht unkomfortabel. Ich habe schon überlegt eine eigene Tabelle für die Aktiv/Passivzeiten anzulegen (daher ist sie in der Beziehungsübersicht enthalten, wird aber aktuell nicht genutzt).

Kann mir jemand helfen wie ich solche Zeiten gut verwalten und auswerten kann? Die Daten werden über ein Formular erfasst und bei Bedarf geändert.

Danke für jede Hilfe!
Gruß
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7535
Re: mit Zeiträumen arbeiten
« Antwort #1 am: Januar 03, 2019, 17:58:26 »
Hallo,
die Tabelle für die extra Tabelle ist richtig, aller dings würde ich nur die Aktivzeiten erfassen. Fehlende Zeiträume sind passiv (oder umgekehrt, passiv erfassen, fehlende Zr sind dann aktiv). Erfassung der Zeiten in einem Unterformular.
Die Tabelle mit den Ehrungen ist auch falsch. Da sollte es nur ein Datumsfeld geben und eine extra Tabelle für die Ehrungsart, als je ein Datensatz. Analog n:m Kontakte.

Ich würde auch keine Anlagefelder verwenden und auch keine Bilder speichern. Die DB kommt sonst sehr schnell an ihre Grenzen. Für Dokumente Bilder etc. sollten nur deren Namen in einem Feld gespeichert werden und mit einem externen Programm (PDF, Word) geöffnet werden. Bilder kann man dann je Datensatzwechsel einem Bildsteuerelement zuweisen. Das Bild selbst wird aber nicht gespeichert.

Ein NoGo ist das Mehrwertfeld für die Abteilungen. Die machen nur Probleme.
Wirf das wieder raus. Die Abteilungszugehörigkeit sollte als n:m (wie bei den Kontakten) aufgelöst werden.

Weiterhin solltest Du auch die Vereinsfunktionen als n:m Tabellen erfassen.
Gruß
Klaus
 

Offline esskah

  • Newbie
  • Beiträge: 7
Re: mit Zeiträumen arbeiten
« Antwort #2 am: Januar 03, 2019, 18:09:15 »
Hallo,

erstmal Danke für die schnelle Hilfe! Grundsätzlich habe ich wohl vertanden was Du meinst und es klingt für mich logisch. Wenn ich mal das Prinzip der Zeiten verstanden habe, kann ich es sicher analog auch auf die Ehrungen anwenden.

Der Hinweis mit den Anlagen ist gut, darum werde ich mich mal separat kümmern.
Auch der Hinweis mit dem Mehrwertfeld für die Abteilungen ist richtig, da kämpfe ich an anderer Front - komme ggf. noch darauf zurück. Der Ansatz es analog der Kontakte zu machen ist gut. Auf diesem Weg war ich schon, hatte jedoch immer wieder Schwierigkeiten beim Anlegen eines neuen Datensatzes über das Formular.

Was genau meinst Du mit Vereinsfunktionen?
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1983
Re: mit Zeiträumen arbeiten
« Antwort #3 am: Januar 03, 2019, 18:44:07 »
Hallo,
Zitat
Was genau meinst Du mit Vereinsfunktionen?
Vorsitzender, Kassenwart, Schriftführer u./o. ä.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7535
Re: mit Zeiträumen arbeiten
« Antwort #4 am: Januar 03, 2019, 19:03:37 »
Hallo,
Zitat
Wenn ich mal das Prinzip der Zeiten verstanden habe, kann ich es sicher analog auch auf die Ehrungen anwenden.
Nein, das eine hat mit dem anderen nichts zu tun. Die Zeiten werden als 1:n Beziehung erfasst mit Fremdschlüssel zur Person. Die Ehrungen als n:m mit FS zur Person und FS zur Ehrungsart, mit Datumsfeld für den Tag an dem die Ehrung durchgeführt wurde.
Die Ehrungen sind analog zu den Kontakten (wie ich es auch geschrieben habe) und nicht zu den Zeiten Aktiv/Passiv.

Zu den Vereinsfunktionen hat ekkehard schon was gesagt.

PS:
Die Präfixe (per, ehr, kon usw.) als Bezug zur Tabelle halte ich nur für überflüssigen Ballast und sonst nix. Nachname kann ja sonst nix sein als die Person, wozu da noch per davor.
Aber das ist unwichtig, kannst du halten wie Du willst.
« Letzte Änderung: Januar 03, 2019, 19:08:29 von MzKlMu »
Gruß
Klaus
 

Offline esskah

  • Newbie
  • Beiträge: 7
Re: mit Zeiträumen arbeiten
« Antwort #5 am: Januar 03, 2019, 19:34:06 »
also die Funktionen sind derzeit nicht in Benutzung und werden wohl auch künftig nicht genutzt und ich habe sie auch in der Übersicht doch gar nicht drin  :-\

Wie ich schon schrieb, habe ich wenig Erfahrung mit Access, daher kann ich manchen Aussagen wie n:m und 1:n oder diversen Sätze nicht oder nicht gleich folgen. Vielleicht wäre es auch sinnvoll sich erstmal dem Aktiv/Passivzeiten-Problem zu widmen, der Rest funktioniert soweit und daher kann ich mich später darum kümmern.

Also: A/P-Zeiten als 1:n Beziehung mit Fremdschlüssel zur Person - da werde ich jetzt mal versuchen dran zu gehen.

Die Präfixe dienen dazu mir einen Anhaltspunkt zu geben aus welcher Tabelle die Daten stammen. Meines ist sicherlich noch eine kleine Datenbank, dennoch helfen mir die Präfixe. Wenn ich versierter in Access bin, kann ich vielleicht auch mal auf solchen Ballast verzichten.

Danke erstmal bis dahin, bin aber für weitere Hinweise/Vorschläge dankbar
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7535
Re: mit Zeiträumen arbeiten
« Antwort #6 am: Januar 03, 2019, 20:10:09 »
Hallo,
die Kontakte sind als n:m Beziehung angelegt. Die Ehrungen hast Du als 1:n, was aber mit einem Ehrungstyp auch n:m sein sollte.

Was mir gerade aufgefallen ist, das Sterbedatum gehört wie das Geburtsdatum als einmaliger Vorgang in die Personentabelle.
Gruß
Klaus
 

Offline esskah

  • Newbie
  • Beiträge: 7
Re: mit Zeiträumen arbeiten
« Antwort #7 am: Januar 03, 2019, 21:33:18 »
Hallo,

okay, Sterbedatum möchte ich ungern verschieben, weil es sich auf alle Abfragen, Formular und Berichte auswirken würde. Sachlich sicherlich richtig, aber Aufwand/Nutzen eher ungerechtfertigt.

Ich habe die Aktiv-/Passivzeiten-Tabelle erfolgreich angelegt, die 1:n Beziehung(en) hergestellt und erfolgreich ins Formular eingefügt. Das klappt also alles - danke dafür! Allerdings habe ich jetzt bei den Beziehungen eine (weitere) tblPersonen_1  :-[ in der Tabellenübersicht taucht die tblPersonen aber nur einmal auf  :o

Kannst Du mir bitte beim nächsten Schritt helfen, wie ich nun damit rechne? Die Zeiten eines Mitglieds zu addieren und wie lege ich nun auf Basis der A/P-Zeiten den Status fest? Wenn der letzte Eintrag eine Aktiv-Zeit ist = Status aktiv, wenn der letzte Eintrag eine Passiv-Zeit ist = Status passiv (dann kommen noch ausgetreten oder verstorben dazu).

Danke für Deine Hilfe und Geduld!
« Letzte Änderung: Januar 03, 2019, 21:46:31 von esskah »
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7535
Re: mit Zeiträumen arbeiten
« Antwort #8 am: Januar 03, 2019, 21:59:13 »
Hallo,
Zitat
Allerdings habe ich jetzt bei den Beziehungen eine (weitere) tblPersonen_1  :-[ in der Tabellenübersicht taucht die tblPersonen aber nur einmal auf  :o
das dürfte falsch sein. Bitte das aktuelle Beziehungsbild zeigen.
Ich möchte auch sehen, ob das mit den zeiten richtig ist.

Ich bin zwischenzeitlich der Auffassung, dass die komplette Tabelle mit den Mitgleidschaften überflüssig ist. Die übriggeblliebenen Felder gehören alle in die Personentabelle.
Das kann ja niemals eine 1:1 Beziehung sein, sonst könnte ja ein Mitlied mehrere Todesdaten haben. Alos unabhängig vom Aufwand, weg damit.
Die Familienstandsfelder (Ehe, Geschieden etc.) müssen in eine extra Tabelle als n:m Beziheung mit FS zur Person und FS zum Familienstand (Tabelle erforderlich). Eine Person kann ja 2x heiraten.

Zeige dann mal das neue Beziehungsbild, dann sehen wir weiter. Da gibt es noch einiges zu tun.
Gruß
Klaus
 

Offline esskah

  • Newbie
  • Beiträge: 7
Re: mit Zeiträumen arbeiten
« Antwort #9 am: Januar 03, 2019, 22:07:24 »
Hallo Klaus,

da stimme ich Dir zu, kann man mittelfristig machen. Aktuell jedoch kann und muss ich mich primär um die Zeiten kümmern.

Ich vermute, dass diese verkorkste Beziehung aus einer (zuerst) fehlerhaften Verknüpfung aus dem Unterformular kommt. Diese habe ich erst beseitigen können, indem ich das Unterformular neu angelegt habe.


Problem gelöst, ich habe das Formular nochmal von Grund auf neu erstellt, jetzt sind alle Beziehungen wieder in Ordnung. Wahrscheinlich wurde die tblPersonen nur nochmal angezeigt - egal.

Mir sind (aktuell) die Passivzeiten auch wichtig und sollten aufgeführt werden, weil sie Grundlage einer Ehrung sein können. Im Moment erschließt es sich mir noch nicht, wie ich sonst anders (einfach) rechnen kann.
« Letzte Änderung: Januar 03, 2019, 22:46:12 von esskah »
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7535
Re: mit Zeiträumen arbeiten
« Antwort #10 am: Januar 03, 2019, 23:09:52 »
Hallo,
nein, beide Zeiten in eine Tabelle. 2 Tabellen machen keinen Sinn. Hatte ich auch nicht vorgeschlagen.
Den FS zur Person, DatumVon, DatumBis und ein Feld für den Status (1=Aktiv, 2=Passiv). Mit 2 Tabellen machst Du Dir das nur unnötig schwer.
Wenn die Passivzeiten wichtig sind, würde ich auch nur diese erfassen, dann braucht es auch das Feld für den Status nicht.
Mitgliedszeit - Aktivzeit = Passivzeit

In welcher Zeiteinheit willst Du eigentlich die Zeiten erfassen, in Tagen, Wochen, Monaten oder Jahren ?
« Letzte Änderung: Januar 03, 2019, 23:25:28 von MzKlMu »
Gruß
Klaus
 

Offline esskah

  • Newbie
  • Beiträge: 7
Re: mit Zeiträumen arbeiten
« Antwort #11 am: Januar 03, 2019, 23:57:58 »
Okay, eine Tabelle - setze ich um, den FS habe ich bereits jetzt schon auf die Person gesetz, das sollte also passen.

Es sind allerdings Aktiv-Zeiten und Passiv-Zeiten erforderlich, weil es zwei unterschiedliche Ehrungen gibt. Nach 35 Jahren überwiegend aktiv oder nach 40 Jahren überwiegend passiv. Daher muss ich ermitteln wie viele Aktiv-Jahre und wie viele Passiv-Jahre ein Mitglied hat. Zudem soll sich der Mitgliedssatus automatisch ermitteln (aktiv oder passiv).

Aktuell löse ich das so, dass ich je alle Aktiv- und Passiv-Zeiten addiere. Ist die Summe Aktiv höher, ist der Status "überwiegend aktiv" (bzw. umgekehrt). Dementsprechend wird die Ehrung ermittelt. Das erfolgt in Jahren mit 2 Nachkommastellen (kann von mir aus auch nur eine Nachkommastelle sein - ist nebensächlich).

Beispiel:
Meier tritt ein 01.01.1980 und ist bis heute Mitglied (=39 Jahre).
Meier war
vom 01.01.1980 - 01.01.1983 (= 3 Jahre) aktiv und
vom 01.01.1983 - 01.01.2019 (= 36 Jahre) passiv

Wäre Meier die ganze Zeit aktiv gewesen, stünde ihm eine Ehrung zu. So ist seine Mitgliedszeit jedoch überwiegend passiv und er hat die 40 Jahre (Passive-Zeit) noch nicht erreicht = keine Ehrung.

Da ich mich nicht darauf verlassen möchte einen Haken bei "aktiv" oder "passiv" zu setzen, möchte ich gerne, dass dieser Status automatisch ermittelt wird, wenn das letzte eingegebene Datum dieses Mitglieds entweder Aktiv-Zeit oder eben Passiv-Zeit ist.
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7535
Re: mit Zeiträumen arbeiten
« Antwort #12 am: Januar 04, 2019, 00:34:19 »
Hallo,
Und wie genau werden die Dezimaljahre ermittelt: Tage / 365,25 ?
Es gibt ja Schaltjahre.

Du brauchst definitiv nur die Aktivzeit.
Das ist doch eine ganz einfache Berechnung. Da braucht es auch keinen Haken.
Meier:
Mitgliedszeit 39 Jahre (ergibt sich automatisch aus Datum-Eintritt
Aktivzeit 3 Jahre
39-3=36 Jahre passiv
3/39 = <=0,5 = keine Ehrung

Müller:
Mitgliedszeit 45 Jahre
Aktivzeit 41 Jahre
45-41=3 Jahre passiv
41/3 = >0,5 = Ehrung

Alles was bei der Division von Aktivzeit/Mitgliedszeit >0,5 ist war überwiegnd aktiv und erhält somit eine Ehrung.

Völlig problemlos, eine einfache Formel. Du braucht die passive Zeit noch nicht mal zu berechnen.

Zitat
Zudem soll sich der Mitgliedssatus automatisch ermitteln (aktiv oder passiv).
Ganz einfach, ist das Datum für AktivBis leer, ist das Mitlied z.Z. Aktiv, ist es gefüllt ist es passiv, ganz einfach.

Die passive Zeit zu erfassen ist einfach überflüssig und unnötiger Balast. Und eine Fehlerquelle obenderin, denn es müssen 2 zusätzliche Datumsfelder gepflegt werden, die auch eine logische Datumsfolge haben müssen. Und da darf auch kein Fehler gemacht werden.
« Letzte Änderung: Januar 04, 2019, 00:51:03 von MzKlMu »
Gruß
Klaus
 

Offline esskah

  • Newbie
  • Beiträge: 7
Re: mit Zeiträumen arbeiten
« Antwort #13 am: Januar 09, 2019, 21:17:47 »
Hallo Klaus,

erstmal dankeschön für Deine Gedanken und Denkanstöße!!! Ich habe offenbar zu kompliziert gedacht und es mir unnötig schwer gemacht. Ich glaube, dass ich erstmal auf dem richtigen Weg bin. Es braucht allerdings noch etwas Zeit, bis ich meine DB nun überarbeitet habe. Dann kommen sicher wieder Fragen auf, die ich gerne stellen würde.

Aber Du hattest noch Fragen:
Ich lasse mir nun die Zeiträume durch Eingabe eines Zieldatums ermitteln. In der Abfrage habe ich dazu in einem Feld Zieldatum: [zu welchem Stichtag?]Damit mir bei den Verstorbenen aber nicht die Zeiten bis heute, sondern nur bis zu deren Tod gerechnet werden, habe ich ein zusätzliches berechnetes Feld
Stichtag: Wenn(IstNull([mitDatumTod]);[Zieldatum];[mitDatumTod])
Das funktioniert wie es soll. Weil ich auch das Alter haben möchte (bei einer Ehrung ist ein Mindestalter erforderlich), berechne ich mir diese dann mit:
Alter: (DatDiff("jjjj";[perDatumGeburt];[Stichtag]))

hier habe ich nun das Problem, dass mir die aktuelle Abfrage einen falschen Wert ausgibt. Das errechnete Alter ist um ein Jahr zu hoch.
Ich berechne in einer anderen Abfrage ebenfalls das Alter auf diesem Weg und dort stimmt es. Hast Du eine Idee?


Ich habe mir das in einer anderen Abfrage korrekt berechnete Alter angesehen und nun übernommen, jetzt stimmt es. Der Vollständigkeit halber wie mache ich das?
Alter: Wenn(IstNull([mitDatumTod]);DatDiff("jjjj";[perDatumGeburt];[Zieldatum])+(Format([Zieldatum];"mmtt")<Format([perDatumGeburt];"mmtt"));DatDiff("jjjj";[perDatumGeburt];[mitDatumTod])+(Format([mitDatumTod];"mmtt")<Format([perDatumGeburt];"mmtt")))
Danke für Deine bisherige und (hoffentlich) weitere Hilfe!
« Letzte Änderung: Januar 09, 2019, 21:57:33 von esskah »
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7535
Re: mit Zeiträumen arbeiten
« Antwort #14 am: Januar 09, 2019, 23:39:16 »
Hallo,
Wenn braucht es dazu nicht. Es gibt die Nz Funktion die einen Ersatzwert bestimmt wenn ein Feld leer ist.
Stichtag: Nz([mitDatumTod];[Zieldatum])Dann wird auch die Altersbestimmung deutlich kürzer.
mitAlter: DatDiff("jjjj";[perDatumGeburt];Nz([mitDatumTod];[Zieldatum]))+(Format(Nz([mitDatumTod];[Zieldatum]);"mmtt")<Format([perDatumGeburt];"mmtt"))
PS:
Alter ist ein reserviertes SQL Schlüsselwort und sollte für eigene Namen nicht verwendet werden.
Gruß
Klaus
 

 

im frontend mit abfrage aus dem backend arbeiten

Begonnen von koernigesBoard Tabelle/Abfrage

Antworten: 6
Aufrufe: 5197
Letzter Beitrag Mai 30, 2010, 07:42:58
von database
Arbeiten mit Kombifeld

Begonnen von edgar.baslerBoard Access Programmierung

Antworten: 3
Aufrufe: 2596
Letzter Beitrag September 10, 2010, 18:08:01
von DF6GL
in einer Abfrage arbeiten

Begonnen von Christian111Board Tabelle/Abfrage

Antworten: 6
Aufrufe: 2889
Letzter Beitrag Mai 23, 2011, 10:33:59
von MzKlMu
Arbeiten mit FK in Formularen?

Begonnen von silentwolfBoard Formular

Antworten: 9
Aufrufe: 4404
Letzter Beitrag Juni 16, 2011, 14:02:21
von silentwolf
Arbeiten mit verknüpften Tabellen in Access 2007

Begonnen von Frank84Board Formular

Antworten: 3
Aufrufe: 2588
Letzter Beitrag September 24, 2011, 14:40:38
von database