collapse

* Benutzer Info

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

* Wer ist Online

  • Punkt Gäste: 14
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 2
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 14660
  • stats Beiträge insgesamt: 74451
  • stats Themen insgesamt: 10018
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 933

Autor Thema: Abfrage auf div. Ehrungen beschränken  (Gelesen 844 mal)

Offline mad

  • Access-Profi
  • **
  • Beiträge: 219
Abfrage auf div. Ehrungen beschränken
« am: Januar 13, 2020, 10:51:20 »
Hallo Zusammen,

wir haben seit der Zusammenlegung unserer zwei Feuerwehren ein Problem, wer für 25 bzw. 40 Jahre aktive Dienstzeit zu ehren ist.
Bisher hatten wir nur für die obigen Dienstjubiläen zu ehren, da hat unsere alte Abfrage noch ausgereicht.
Jetzt gibt es aber verschiedenste Ehrungen und der bereits angepaßte Code funktioniert noch nicht so richtig.

aktueller Code:
SELECT Personal.PID, Personal.Namekenn, Personal.NameP, Personal.EintrittFW1, Year([EintrittFW1]) AS EintrittsJahr1, IIf((Year(Now())-Year([EintrittFW1])) Mod 40>=25,Year(Now())-Year([EintrittFW1])) AS 25Jahre, IIf((Year(Now())-Year([EintrittFW1])) Mod 45>=40,Year(Now())-Year([EintrittFW1])) AS 40Jahre, tblEhrung.EhrungDatum, Personal.Adresse, Personal.HausNr, Personal.PLZ, Ortsteile.Ort, Personal.GebDatum, tblEhrung.EhrungTitelID_E
FROM (Ortsteile INNER JOIN Personal ON Ortsteile.OrtID = Personal.OrtID_F) LEFT JOIN (tblEhrung RIGHT JOIN tblRegistrierungEhrung ON tblEhrung.EhrungID = tblRegistrierungEhrung.EhrungID_E) ON Personal.PID = tblRegistrierungEhrung.PID_E
WHERE (((Personal.statusID_P)=1 Or (Personal.statusID_P)=2) AND ((tblRegistrierungEhrung.PID_E) Is Null)) OR (((Personal.statusID_P)=1 Or (Personal.statusID_P)=2) AND ((tblRegistrierungEhrung.PID_E) Is Null) AND ((tblRegistrierungEhrung.StatusRegID_E)<>2))
GROUP BY Personal.PID, Personal.Namekenn, Personal.NameP, Personal.EintrittFW1, Year([EintrittFW1]), IIf((Year(Now())-Year([EintrittFW1])) Mod 40>=25,Year(Now())-Year([EintrittFW1])), IIf((Year(Now())-Year([EintrittFW1])) Mod 45>=40,Year(Now())-Year([EintrittFW1])), tblEhrung.EhrungDatum, Personal.Adresse, Personal.HausNr, Personal.PLZ, Ortsteile.Ort, Personal.GebDatum, tblEhrung.EhrungTitelID_E
HAVING (((IIf((Year(Now())-Year([EintrittFW1])) Mod 40>=25,Year(Now())-Year([EintrittFW1]))) Is Not Null)) OR (((IIf((Year(Now())-Year([EintrittFW1])) Mod 45>=40,Year(Now())-Year([EintrittFW1]))) Is Not Null))
ORDER BY Personal.EintrittFW1;

Was soll ausgewertet werden:
Wenn ein Kollege 25 Jahre aktive Dienstzeit erreicht hat soll er entsprechend in der Abfrage „gry25_40JahreAktiv“ angezeigt werden. Sobald er hierfür geehrt wurde soll er natürlich nicht mehr erscheinen.
Dasselbe gilt für 40 Jahre aktive Dienstzeit.
Ich habe das Problem die nachfolgen „EhrungTitelID_E“s einzubauen so das auch nur diese beiden Titel mit einbezogen werden und der Rest für diese Abfrage außen vor bleibt.

25 Jahre: „EhrungTitelID_E“ = 47
40 Jahre: „EhrungTitelID_E“ = 48
„EhrungTitelID_E“ befindet sich in der Tabelle „tblEhrung“

Nun habe ich Testweise in der Tabelle „tblEhrung“ für zwei Kollegen jeweils eine andere Ehrung (50 u. 56) eingetragen. Dann sollten aber die beiden Kollegen noch in  der Abfrage „gry25_40JahreAktiv“ angezeigt werden, da Sie nicht für „EhrungTitelID_E“ 47 u. 48 geehrt wurden sondern für was anderes.
Zum testen hab ich mal eine Test-DB mit eingestellt.
Ich habe schon einiges ausprobiert wie denn die beiden „EhrungTitelID_E“ 47 u. 48 berücksichtigt werden könnten, aber alles ohne Erfolg. Drum habe ich die Spalte „EhrungTitelID_E“ für die Muster-DB erstmal ohne Kriterium belassen, sonst wird erstmal gar nichts angezeigt.

Die wichtige Abfrage ist „gry25_40JahreAktiv“.

Könnte mir jemand Hilfestellung geben.


Gruss
mad
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 24198
Re: Abfrage auf div. Ehrungen beschränken
« Antwort #1 am: Januar 13, 2020, 12:59:24 »
Hallo,

ohne jetzt diesen zerkochten Abfragestring-Eintopf angesehen zu haben, fehlt in der DB essentiell oder ist falsch:

-- die Beziehungen zwischen den Tabellen.
-- falscher Aufbau der Tabellen.
-- Zuordnung eines EhrungTitels an eine Person.

Wenn das nicht korrigiert wird, nützen auch die komplexesten Abfragen nichts.

Haben wir sicherlich schon öfters bemängelt und auf Umbau gedrängt.


Wenn eine Person mehrere Ehrungen erhalten kann, so ist diese Tatsache mit einer n-Tabelle ("tblPersonenEhrungen") abzubilden.

Darin sind die PersID, die Ehrung(Titel)ID, das EhrungsDatum und zusätzliche evtl.  benötigte Infofelder zu führen  (Das Ganze ist einfach eine Ehrungs-Historie(ntabelle) ).

Dass eine bestimmte Ehrung aussteht, bzw. nicht erfolgt ist, ist am Fehlen des Ehrungsdatums ersichtlich, im Umkehrschluss bedeutet ein vorhandenes Ehrungsdatum eben, dass die entspr. Ehrung geschehen ist.


Offline mad

  • Access-Profi
  • **
  • Beiträge: 219
Re: Abfrage auf div. Ehrungen beschränken
« Antwort #2 am: Januar 13, 2020, 18:11:58 »
Hallo,

ich der Original-DB gibt es natürlich die Beziehungen unter den Tabellen. Habe diese nun auch in der Muster-DB aktualisiert.
Der Aufbau der Tabellen ist wie in einem früheren Beitrag im Forum vorgeschlagen. Nur hier auf ein anderes Thema angewandt.

Zitat
Dass eine bestimmte Ehrung aussteht, bzw. nicht erfolgt ist, ist am Fehlen des Ehrungsdatums ersichtlich, im Umkehrschluss bedeutet ein vorhandenes Ehrungsdatum eben, dass die entspr. Ehrung geschehen ist.
Leider ist es in diesem Fall nicht so einfach, denn es kann natürlich auch Ehrungen mit Datum geben. Aber in dieser Abfrage sollen nur die beiden Ehrungen:
Zitat
25 Jahre: „EhrungTitelID_E“ = 47
40 Jahre: „EhrungTitelID_E“ = 48
„EhrungTitelID_E“ befindet sich in der Tabelle „tblEhrung“
berücksichtigt werden.
Ich habe in der angehängten Muster-DB aus der Abfrage aus übersichtsgründen mal die Felder die zur Adressen-Info gehören rausgenommen.
Sowie auch den Code etwas angepaßt:
SELECT Personal.PID, Personal.NameP, Personal.EintrittFW1, Year([EintrittFW1]) AS EintrittsJahr1, IIf((Year(Now())-Year([EintrittFW1])) Mod 40>=25,Year(Now())-Year([EintrittFW1])) AS 25Jahre, IIf((Year(Now())-Year([EintrittFW1])) Mod 45>=40,Year(Now())-Year([EintrittFW1])) AS 40Jahre, tblEhrung.EhrungDatum, tblEhrung.EhrungTitelID_E
FROM Ortsteile INNER JOIN (Personal LEFT JOIN (tblEhrung RIGHT JOIN tblRegistrierungEhrung ON tblEhrung.EhrungID = tblRegistrierungEhrung.EhrungID_E) ON Personal.PID = tblRegistrierungEhrung.PID_E) ON Ortsteile.OrtID = Personal.OrtID_F
GROUP BY Personal.PID, Personal.NameP, Personal.EintrittFW1, Year([EintrittFW1]), IIf((Year(Now())-Year([EintrittFW1])) Mod 40>=25,Year(Now())-Year([EintrittFW1])), IIf((Year(Now())-Year([EintrittFW1])) Mod 45>=40,Year(Now())-Year([EintrittFW1])), tblEhrung.EhrungDatum, tblEhrung.EhrungTitelID_E
HAVING (((IIf((Year(Now())-Year([EintrittFW1])) Mod 40>=25,Year(Now())-Year([EintrittFW1]))) Is Not Null) AND ((([tblEhrung].[EhrungTitelID_E])<>47) Is Null)) OR (((IIf((Year(Now())-Year([EintrittFW1])) Mod 45>=40,Year(Now())-Year([EintrittFW1]))) Is Not Null) AND ((([tblEhrung].[EhrungTitelID_E])<>48) Is Null))
ORDER BY Personal.EintrittFW1;
Aber leider sollte in der aktuellen Konstellation auch der Kollege "webe" (PID = 3) in der Abfrage "gry25_40JahreAktiv“ angezeigt werden. Den er hat zwar schon eine Ehrung aber eben nicht die für "40 Jahre: „EhrungTitelID_E“ = 48".
Leider wird er noch nicht angezeigt.

Gruss
mad

 

Offline mad

  • Access-Profi
  • **
  • Beiträge: 219
Re: Abfrage auf div. Ehrungen beschränken
« Antwort #3 am: Januar 15, 2020, 15:33:00 »
Hallo Zusammen,

habe nun mal meine Abfrage eingekürzt, auf das nötigste und etwas angepasst. Nun wird auch schon "fast" das richtige Abfrageergebnis erreicht.
Code:
SELECT DISTINCT Personal.PID, Personal.Namekenn, Personal.NameP, Personal.EintrittFW1, Year([EintrittFW1]) AS EintrittsJahr1, IIf((Year(Now())-Year([EintrittFW1])) Mod 40>=25,Year(Now())-Year([EintrittFW1])) AS 25Jahre, IIf((Year(Now())-Year([EintrittFW1])) Mod 45>=40,Year(Now())-Year([EintrittFW1])) AS 40Jahre, Personal.statusID_P, tblRegEhrung2540.PID_E
FROM Personal LEFT JOIN (tblEhrung2540 RIGHT JOIN tblRegEhrung2540 ON tblEhrung2540.EhrungID = tblRegEhrung2540.EhrungID_E) ON Personal.PID = tblRegEhrung2540.PID_E
GROUP BY Personal.PID, Personal.Namekenn, Personal.NameP, Personal.EintrittFW1, Year([EintrittFW1]), IIf((Year(Now())-Year([EintrittFW1])) Mod 40>=25,Year(Now())-Year([EintrittFW1])), IIf((Year(Now())-Year([EintrittFW1])) Mod 45>=40,Year(Now())-Year([EintrittFW1])), Personal.statusID_P, tblRegEhrung2540.PID_E
HAVING (((IIf((Year(Now())-Year([EintrittFW1])) Mod 40>=25,Year(Now())-Year([EintrittFW1]))) Is Not Null) AND ((Personal.statusID_P)=1 Or (Personal.statusID_P)=2) AND ((tblRegEhrung2540.PID_E) Is Null)) OR (((IIf((Year(Now())-Year([EintrittFW1])) Mod 45>=40,Year(Now())-Year([EintrittFW1]))) Is Not Null) AND ((Personal.statusID_P)=1 Or (Personal.statusID_P)=2) AND ((tblRegEhrung2540.PID_E) Is Not Null))

Allerdings werden Kollegen die beide Ehrungen erhalten habe und noch nicht ausgeschieden sind immer noch angezeigt.
Gibt es die Möglichkeit wenn ein Kollege ("PID_E" aus Tabelle "tblRegEhrung2540") beide Ehrungen ("EhrungTitelID_E" 47 u. 48 aus Tabelle "tblEhrung2540") erhalten hat, in den Code einzubauen und entsprechend auszublenden?


Gruss
mad


 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 24198
Re: Abfrage auf div. Ehrungen beschränken
« Antwort #4 am: Januar 15, 2020, 19:19:14 »
Hallo,

versuch:

.... EhrungTitelID_Not in ( 47, 48)...

Offline mad

  • Access-Profi
  • **
  • Beiträge: 219
Re: Abfrage auf div. Ehrungen beschränken
« Antwort #5 am: Januar 15, 2020, 19:42:10 »
Hallo,

jetzt werden alle ausgeblendet die die Ehrung 47 oder 48 haben.
Ich möchte aber alle ausblenden die beide Ehrungen haben, wenn der Kollege nur eine von beiden hat soll er eingeblendet bleiben.

Gruss
mad
 

Offline ebs17

  • Access Guru
  • ****
  • Beiträge: 1240
Re: Abfrage auf div. Ehrungen beschränken
« Antwort #6 am: Januar 15, 2020, 19:49:54 »
In Deiner Personaltabelle gibt es mehrere Felder für Eintritt und Austritt. Wenn Du Dich in Deinen sehr umständlichen Abfragen auf nur den ersten Eintritt konzentrierst, ist ein Versagen früher oder später kaum zu vermeiden - es sei denn der erste Eintritt berechtigt lebenslang zu Ehrungen, egal auch, ob ausgetreten oder gestorben.

Mit anderen Worten: Das Datenmodell ist nicht stimmig und somit auch nicht wert, darauf aufzubauen und seine Zeit zu investieren.
Mit freundlichem Glück Auf!

Eberhard
 

Offline mad

  • Access-Profi
  • **
  • Beiträge: 219
Re: Abfrage auf div. Ehrungen beschränken
« Antwort #7 am: Januar 16, 2020, 07:42:27 »
Hallo,

Zitat
Mit anderen Worten: Das Datenmodell ist nicht stimmig und somit auch nicht wert, darauf aufzubauen und seine Zeit zu investieren.
Ja das ist soweit richtig, allerdings arbeite ich schon dran, hätte das der Vereinfachung wegen erstmal ausgeblendet.

Aber wenn es schon angesprochen wird, hier meine aktuellen Ergebnisse:
In meinem aktualisierten Formular gibt es bereits einen Code der die Dienstzeit unter Berücksichtigung dieser Gegebenheiten berücksichtigt:
Private Function Get_Dauer() As Integer
Dim dAus1 As Date, dAus2 As Date, dDauer As Integer
    If Nz(Me![AusgeschiedDatum], 0) > 0 Then
        If Nz(Me![AustrittFW1], 0) = 0 Then
            dAus1 = Me![AusgeschiedDatum]
            dDauer = dAus1 - Me![EintrittFW1]
        Else
            dAus1 = Me![AustrittFW1]
            dAus2 = Me![AusgeschiedDatum]
            dDauer = (dAus1 - Me![EintrittFW1]) + (dAus2 - Me![EintrittFW2])
        End If
    Else
        dDauer = (Nz(Me![AustrittFW2], Date) - Nz(Me![EintrittFW2], Date)) + _
               (Nz(Me![AustrittFW1], Date) - Nz(Me![EintrittFW1], Date))
    End If
    Get_Dauer = DatePart("yyyy", dDauer + 2) - 1900
End Function
Sobald ein Datum unter "verstorben" eingetragen wird wird dieses Datum auch bei "AusgeschiedDatum" eingetragen.

Zurückkommend auf die Abfrage, es gibt dann zwei Kombinationen von Datumswerte die eingetragen sein können und auch in Frage kommen. Wenn jemand ausgeschieden oder verstorben ist, gibt keine Ehrung mehr und muß somit auch nicht mehr angezeigt werden.
Das Feld "AustrittFW2" entfällt zukünftig, "AusgeschiedDatum" ist ausreichend.

Szenarien zu Datumseinträgen:
"EintrittFW1" - "AustrittFW1" - "EintrittFW2" - Datum()
"EintrittFW1" - Datum()

Habe dazu eine kleine Muster-DB erstellt, die meine Versuche auch zeigt. Die Codes habe ich auch in einem Word-Dokument wegen der bessern Übersicht dazu gegeben:
Habe es jeweils mit und ohne der Funktion "Mod" versucht und bisher auch noch nicht verschachtelt.
Jahre1:... (ohne "Mod") funktioniert
Jahre11:... (mit "Mod") funktioniert noch nicht, obwohl keine Fehlermeldung kommt. Hier scheitert es scheinbar wo und in welcher Anzahl die Klammern () gesetzt werden müssen.
Bei Jahre2:... und Jahre22:... ist es das selbe.
Und wo ich aktuell auch nicht weiter komme ist wie ich Jahre1:.. und Jahre2:... bzw. dann letztendlich Jahre11:... und Jahre22:... verschachteln kann.
Habe es mal mit Jahre1:... u. Jahre2:... versucht, es werden zwar Werte ausgegeben aber nicht die richtigen!

Ist jetzt viel Text, aber auch sehr komplex, zumindestens für mich.


Gruss
mad
 

Offline mad

  • Access-Profi
  • **
  • Beiträge: 219
Re: Abfrage auf div. Ehrungen beschränken
« Antwort #8 am: Januar 17, 2020, 17:07:35 »
Hallo Zusammen,

bin immer noch am arbeiten wie ich meine Abfrage hinbekomme.
Habe jetzt folgenden Ansatz der ausreichen würde:

Jahre1: Wenn(Nz([EintrittFW2];0)>0;Jahr(Jetzt())-Jahr([EintrittFW1]);Jahr([AustrittFW1])-Jahr([EintrittFW1])+Jahr(Jetzt())-Jahr([EintrittFW2]))
Allerdings wendet mein Code nur den "True-Teil"
Zitat
Jahr(Jetzt())-Jahr([EintrittFW1]);
an. Entsprechende Jahre werden angezeigt.
Nicht den "False-Teil"
Zitat
Jahr([AustrittFW1])-Jahr([EintrittFW1])+Jahr(Jetzt())-Jahr([EintrittFW2]))
Hier bleibt die Zelle einfach leer. Auch keine Fehlermeldung.

Wenn ich den Code testweise wie folgt vereinfache,
Jahre2: Wenn(Nz([EintrittFW2];0)>0;1111;2222)dann funktionierts, das je nachdem ob "EintrittFW2">0 wird "1111" angezeigt bzw. "EintrittFW2"=0 "2222" angezeigt.

Warum funktioniert bei mir mein berechnender False-Teil nicht? Könnte mir jemand Hilfestellung geben.

Danke
mad
 

Offline mad

  • Access-Profi
  • **
  • Beiträge: 219
Re: Abfrage auf div. Ehrungen beschränken
« Antwort #9 am: Januar 17, 2020, 18:18:38 »
Hallo,

habe vermutlich meinen Fehler gefunden:
Zitat
Jahre1: Wenn(Nz([EintrittFW2];0)>0;.....
stattdessen:
Zitat
Jahre1: Wenn(Nz([EintrittFW2];1)>0;......

Nun wäre die Frage, wie kann ich die Mod-Funktion wieder in meinem Code anwenden?
In meiner alten Abfrage hat das mal so funktioniert:
Zitat
25Jahre: Wenn((Jahr(Jetzt())-Jahr([EintrittFW1])) Mod 40>=25;Jahr(Jetzt())-Jahr([EintrittFW1]))

Aktuelle Code noch ohne Mod-Funktion:
25Jahre: Wenn(Nz([EintrittFW2];1)>0;Jahr(Jetzt())-Jahr([EintrittFW1]);Jahr([AustrittFW1])-Jahr([EintrittFW1])+Jahr(Jetzt())-Jahr([EintrittFW2]))
Habe leider keine Ahnung wie ich das anwenden soll.


Gruss
mad
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 8341
Re: Abfrage auf div. Ehrungen beschränken
« Antwort #10 am: Januar 20, 2020, 14:59:02 »
Hallo,
ich würde auf das Mod Gedöns verzichten, sondern einfach nur die Jahre der Zugehörigkeit bestimmen.
Dann legst Du Dir eine Tabelle an die alle möglichen Ehrungen erfasst. In die Tabelel kannst Du noch ein Hakenfeld aufnehmen. Dann kannst Du anhaken welche Ehrungen Du sehen willst.

Jahre    Bezeichnung
 25      25 jähriges
 40      40 jähriges
Also in die Tabelle kommen alle Ehrungen die es gibt.
Diese Tabelle verwendest Du in einer Abfrage die die reinen Dienstjahre errechnet hat und stellst über die Jahre eine Verknüpfung her.
Die Abfrage zeigt dann automatisch nur die Namen an die eine Ehrung haben, mit der Bezeichnung der Ehrung.
« Letzte Änderung: Januar 20, 2020, 16:14:21 von MzKlMu »
Gruß
Klaus
 

Offline mad

  • Access-Profi
  • **
  • Beiträge: 219
Re: Abfrage auf div. Ehrungen beschränken
« Antwort #11 am: Januar 20, 2020, 19:17:56 »
Hallo Klaus,

erstmal Danke für deine Antwort. Eine Abfrage wer welche Ehrungen hat habe ich bereits.
Ich möchte eine Abfrage wer ab einer bestimmten Anzahl an Dienstjahren zur entsprechenden Ehrung ansteht. Dazu dient die Mod-Funktion. Aber vielleicht geht es auch anders?
Dazu habe ich nochmals, mit mehr DS, eine Muster-DB eingestellt.

Ich habe ein Abfrage "1NEU_Basis_AbfrageJahre25_40" mit je einer Spalte für 25Jahre (...[EhrungTitelID])=47...) und eine für 40Jahre (...[EhrungTitelID])=48...) und noch diverse berechnenden Spalten.

Die Funktion Mod "Mod 40>=25" soll auswerten wer >=25 Dienstjahre hat aber max.40.
dann soll die Spalte für 40 Jahre greifen:
Die Funktion Mod "Mod 45>=40" soll auswerten wer >=40 Dienstjahre hat aber max.45, dann scheider er sowieso aus.

Wenn jemand die Ehrung "[StatusRegID_E]=2" für 25 Jahre erhalten hat bzw. ausgeschieden ist soll er nicht mehr in der Spalte 25Jahre angezeigt werden, wenn nicht natürlich angezeigt. Das ...Mod 40>=25 soll garantieren das der Kollege solange er diese Ehrung noch nicht erhalten hat angezeigt wird. Diese Spalte funktioniert soweit.

Wenn jemand die Ehrung für 40 Jahre mit/ohne 25 Jahre bzw. ausgeschieden ist soll er nicht mehr in der Spalte 40Jahre angezeigt werden. Wenn er bereits die Ehrung für 25 Jahre erhalten hat, oder aus irgendwelchen Gründen auch nicht, und 40 Dienstjahre erreicht hat und noch nicht geehrt ist soll er nätürlich noch angezeigt werden.
Nun werden mir aber in der Spalte 40Jahre noch zwei Kollegen (Name66 u. Name88) angezeigt die die Ehrung für 40 Jahre bereits erhalten haben. Der Rest paßt.
Bei den beiden Kollegen werden auch zwei Zeilen angezeigt, wobei das Feld in der Spalte 25Jahre leer ist.

Ich kann leider nicht einschätzen wie groß mein Problem an der stelle ist. Ich hoffe nur ein kleines.
Würde mich freuen wenn ich nochmals unterstützung bekäme, und vielleicht nicht alles umbauen müßte.


Gruss
Manfred
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 8341
Re: Abfrage auf div. Ehrungen beschränken
« Antwort #12 am: Januar 20, 2020, 19:32:09 »
Hallo,
eine solche Tabelle wie ich vorgeschlagen habe gibt es nicht in Deinem Beispiel.
Kannst Du bitte hier mal alle Ehrungen hier zeigen die es gibt mit den Dienstjahren dazu.

Wenn ich das recht verstehe wurden 2 Feuerwehren zusammengelegt.
Für die Dienstjahre werden beide Feuerwehrzeiten zusammengerechnet, richtig ?
Erkläre mal genau wie sich die Dienstzeit berechnet.

Willst Du dann wissen, wer z.B. im nächsten Jahr zur Ehrung ansteht?
Oder für dieses Jahr ?

Lasse die Mod Geschichte (zunächst) einfach mal bei Seite.
« Letzte Änderung: Januar 20, 2020, 19:38:57 von MzKlMu »
Gruß
Klaus
 

Offline mad

  • Access-Profi
  • **
  • Beiträge: 219
Re: Abfrage auf div. Ehrungen beschränken
« Antwort #13 am: Januar 20, 2020, 21:07:35 »
Hallo Klaus,

die Dienstzeit berechnet sich wie folgt:
Zitat
Jahr([AustrittFW1])-Jahr([EintrittFW1])+Jahr(Jetzt())-Jahr([EintrittFW2])
Da es aber natürlich auch leere Felder gibt lasse ich diese in der Abfrage mit dem aktuellen Datum füllen!
Somit lautet die Berechnung in der Abfrage "Abfrage_Deinstjahre" wie folgt: DB im Anhang.
Jahre: Nz(Jahr([ErsAustrittFW1])-Jahr([EintrittFW1])+Jahr(Jetzt())-Jahr([ErsEintrittFW2]))
Die Tabelle für alle möglichen Ehrung gibt es in der DB, es handelt sich um die "tblEhrungTitel". Diese habe ich nun um ein Feld "Jahre" und "Sichtbar" erweitert. Die beiden Ehrungen um die es mir geht habe ich abgehackt.
In der Tabelle "tablEhrung2540" wird erfaßt um welche Ehrung "EhrungTitelID_E" es sich handelt incl. Datum und diverse Informationen.
Dann werden in der Tabelle "tablRegEhrung2540" die entsprechende Ehrung "EhrungID_E" registriert und welche Personen "PID_E" diese Ehrung an dem entsprechenden Tag/Jahr erhalten haben. Die Verknüpfungen unter den Tabellen siehe Bild "BEZIEHUNGEN.JPG".
Wie Du das mit der Beziehung über die "Jahre" meinst, verstehe aktuell leider nicht.

Wissen möchte ich wer in diesem Jahr für 25 bzw. 40 Jahre zum ehren ansteht. Wenn er aus welche Gründen (krankheit, etc.) in diesem Jahr nicht geehrt werden kann, soll er natürlich im nächsten Jahr bzw. in Folgejahren wieder angezeigt werden. Und das eben zu zum 40 Dienstjahr, solange er nicht geehrt wurde bzw. bis zum 45. Dienstjahr wenn er nicht für 40Jahre geehrt wurde.
Die Kollegen die bereits für 25 bzw. 40 Jahre geehrt wurden sollen nicht mehr sichbar sein.

Ich hoffe ich konnte es diesmal verständlich erklären.
Wenn man drin steckt, weis man irgendwie was man will aber es ist machmal schwierig zu erklären!

Gruss
mad
 

Offline Hondo

  • Administrator
  • Access Guru
  • ****
  • Beiträge: 4777
  • Balu
    • Access Hilfe
Re: Abfrage auf div. Ehrungen beschränken
« Antwort #14 am: Januar 20, 2020, 21:22:58 »
Hallo,
Was ist ErsEintrittFW2? Habe jetzt nicht alles mitgelesen.
Nz(Jahr([ErsAustrittFW1])-Jahr([EintrittFW1])+Jahr(Jetzt())-Jahr([ErsEintrittFW2]))Die nz() Funktion ist hier überflüssig bzw. müsste eigentlich einen Fehler auslösen weil der 2. Parameter fehlt.
Außerdem ist die Funktion m.E. falsch. Beispiel im Jahr 2020 ausgeführt, wenn der Eintritt der 1.1.2010 ist, und der Austritt der 31.12.2019, dann liefert der Ausdruck 2019 - 2010 + 2020 - 2010 = 19 Jahre.
Ich würde einfach rechnen:
Jahr([ErsAustrittFW1])-Jahr([EintrittFW1])+1
2019-2019+1 = 1 Jahr.
2019-2010+1 = 10 Jahre.
Aber ich weiß ja nicht was ErsEintrittFW2 bedeutet...

Gruß Andreas


 

 

Datensatzzähler in einer Abfrage

Begonnen von peterBoard Tabelle/Abfrage

Antworten: 6
Aufrufe: 16886
Letzter Beitrag Juni 16, 2010, 16:32:34
von cyorps
Abfrage für Terminüberschneidungen und visuelle Darstellung

Begonnen von centaurusBoard Tabelle/Abfrage

Antworten: 3
Aufrufe: 7764
Letzter Beitrag Januar 21, 2011, 21:30:14
von cy_one_1
Datenerfassung mit Abfrage

Begonnen von Daniel-GSBoard Tabelle/Abfrage

Antworten: 2
Aufrufe: 6584
Letzter Beitrag Mai 05, 2010, 22:52:18
von oma
SQL Abfrage DELETE rückgängig machen??

Begonnen von hmfmartinBoard Tabelle/Abfrage

Antworten: 1
Aufrufe: 9247
Letzter Beitrag Mai 08, 2010, 19:18:08
von MzKlMu
6 Mio Datensätze bei Abfrage

Begonnen von JohannaBoard Tabelle/Abfrage

Antworten: 11
Aufrufe: 10208
Letzter Beitrag Mai 19, 2010, 12:29:47
von Wurliwurm

Advertisment / Werbung - Amazon Affiliate Links