4.7k Aufrufe
Gefragt in Datenbanken von
Hallo liebe Helfer,

mit der Formel hier in Excel 2010 wird mir bei entsprechendem Datum in A1 das Wort "Schaltjahr"in C1 angezeigt:
=WENN((TAG(DATUM($A1;3;0))=29)=WAHR;"Schaltjahr";" ")

Wie läßt sich diese Formel so auf eine Access-Abfrage ummodeln (SQL? von VBA null Ahnung), dass im Feld entweder der Eintrag "Schaltjahr" oder "Kein Schaltjahr" erscheint?
Die Abfrage heißt "Aktive Zeiten" und umfasst im Feld "GrundDatum" Zeiträume aus den Jahren von 2000 bis Heute.

Danke
Mirjam

12 Antworten

0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Mirjam,

Wenn das Feld in der Abfrage "Datum" heißt, dann folgende Formel:

Ausdr16: Wenn(DatDiff("d";"1.1." & Jahr([Datum]);"31.12." & [Jahr])+1=366;"Schaltjahr";"kein Schaltjahr")

Gruß

Paul1

[sub]Excel > Access > MS-Office 2003
MS Windows XP Professional SP3
MS Windows 7 Professional SP1
ECDL-Syllabus Version 4.0
FIBU/KORE/PV/KA/AB[/sub]
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Nachtrag:

Die Formel ist in der Entwurfsansicht der Abfrage unter "Aufbauen" in einer neuen Spalte einzugeben.

Gruß

Paul1
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo nochmals,

Die Formel in Excel sollte so lauten:

=WENN(TAG(DATUM(JAHR(A1);3;))=29;"Schaltjahr";"")


Gruß

Paul1
0 Punkte
Beantwortet von
Hallo Paul1,

die Formel funzt leider nicht. Ich krieg folgende Fehlermeldung:

"Dieser Ausdruck wurde falsch eingegeben, oder ist zu komplex, um ausgewertet zu werden. Beispielweise kann ein numerischer Ausdruck zu viele komplizierte Elemente enthalten. Vereinfachen Sie den Ausdruck, indem Sie Teile des Ausdrucks Variablen zuweisen."


Was muss ich noch ändern? Mein Abfragefeld heißt "GrundDatum" und der Code wurde schon entsprechend umgestellt.

Danke für weitere Unterstützung
Mirjam
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Mirjam,

Die Formel funktioniert ja bei mir auch, getestet mit Access 2003, angepasst lautet sie nach Deinen Verhältnissen:

Ausdr16: Wenn(DatDiff("d";"1.1." & Jahr([GrundDatum]);"31.12." & [Jahr])+1=366;"Schaltjahr";"nicht Schaltjahr")

Die Formel hat weder komplizierte Elemente, noch ist sie zu komplex, schau es Dir nochmals an.

Gruß

Paul1
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Mirjam,

Du hast recht, die Formel kann bei Dir nicht funktionieren, sondern nur in meinem Beispiel, da ich noch ein Feld namens "Jahr" dabei habe.

Schau es mir nochmals an, kann aber nichts versprechen

Gruß

Paul1
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Mirjam,

Mit der nachfolgenden Formel sollte es auch bei Dir funktionieren:

Ausdr15:Wenn(1+DatSeriell(Jahr([GrundDatum]);12;31)-DatSeriell(Jahr([GrundDatum]);1;1)=366;"Schaltjahr";"kein Schaltjahr")

schönen Tag noch

Gruß

Paul1
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Mirjam,

Das wäre jetzt die etwas andere Alternative, die auch funktioniert:

Ausdr17: Wenn(DatDiff("d";"1.1." & Jahr([GrundDatum]);("12.31." & Jahr([GrundDatum])))+1=366;"Schaltjahr";"kein Schaltjahr")

Gruß

Paul1
0 Punkte
Beantwortet von
Hallo Paul1,

Problem gelöst mit deiner Antwort 7, Danke für die Geduld.

Konnte mich gestern nicht mehr melden, da Samstagabend und weg :)
Erst bekam ich mit der Formel
Wenn(1+DatSeriell(Jahr([GrundDatum]);12;31)-DatSeriell(Jahr([GrundDatum]);1;1)=366;"Schaltjahr";"kein Schaltjahr")

noch eine Fehlermeldung. Habe mich aber dann Heute noch etwas im Access-Handbuch schlau gemacht und vor den Tabellennamen noch den Präfix tbl gesetzt und damit die Abfrage neu gestartet (dadurch ist das Abfragedatum genau definiert).
Jetzt paßt alles (getestet zwischen 1980 und 1990 werden 1980, 1984 und 1988 korrekt als Schaltjahre angezeigt).
Vielleicht ist es für andere die Vorgehensweise auch noch wissenswert: Da zuerst eine AusgangsTabelle mit Namen "tblDatumsformeln" erstellt wurde und in dieser sich nur eine Spalte befindet mit eben diesen "GrundDatum" habe ich die in der Abfrage übernommen um von dort meine Formeln zu erstellen. ohne den Präfix tbl kommt Access scheinbar durcheinander ob von der Tabelle oder von der Abfrage das GrundDatum genommen werden soll. Die geänderte Formel sieht nun so aus:
Ausdr29:Wenn(1+DatSeriell(Jahr([tblGrundDatum]);12;31)-DatSeriell(Jahr([tblGrundDatum]);1;1)=366;"Schaltjahr";"kein Schaltjahr")

Der Feldname im Tabellenentwurf sollte also einen entsprechenden Präfix haben und dieser dann in der abf beim Aufbauen mit eingegeben werden.

Allen hier noch einen schönen Sonntag
Mirjam
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Mirjam,

Danke fürs Feedback, das mit dem vorgelagerten "tbl" ist mir allerdings neu


Gruß

Paul1

[sub]Excel > Access > MS-Office 2003
MS Windows XP Professional SP3
MS Windows 7 Professional SP1
ECDL-Syllabus Version 4.0
FIBU/KORE/PV/KA/AB[/sub]
...