Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Simsalabimel am Juni 11, 2016, 17:31:49

Titel: Abfrage Mietdauer berechnen
Beitrag von: Simsalabimel am Juni 11, 2016, 17:31:49
Ich hab einmal die Spalten Miet_Anfang und Miet_Ende und möchte die Mietdauer pro Apartment und Gebäude mir anzeigen lassen.
DateDiff("m",Miet_Anfang,Miet_Ende)
Soweit sogut nur sind 3 Felder bei Miet_Ende ungefüllt. Bei zweien handelt es sich wahrscheinlich noch um aktuelle Mieter und in einer Zeile ist Anfang und Ende nicht gefüllt. Würde das gerne noch weiter in meiner Abfrage möglichst logisch mit einberechnen.

Eine Idee ist das ganze mit IIF und ISNULL und Now() zu kombinieren aber krieg das nicht sauber gebaut.
Titel: Re: Abfrage Mietdauer berechnen
Beitrag von: Simsalabimel am Juni 11, 2016, 18:07:53
Also Wenn Mietanfang und Mietende gegeben sind soll er mir die differenz also die Mietdauer angeben. Wenn Mietende leer ist soll er bis heuten Datum weiter rechnen. Das ist die Idee dahinter
SELECT IIF(ISNULL(Miet_Ende),Now(),Miet_Ende) das kombiniert mit Monats_Anfang
Titel: Re: Abfrage Mietdauer berechnen
Beitrag von: MzKlMu am Juni 11, 2016, 18:47:44
Hallo,
was soll berechnet werden wenn der Miet_Anfang leer ist ?
Was willst Du mit Monats_Anfang
Du rechnest die in Deinem DateDiff die Mietdauer in Monaten, ist Dir bewusst, dass da nur ganze Monate gerechnet werden ?

Um ein leeres Miet_Ende abzufangen kannst Du Nz verwenden.
DateDiff("m",Miet_Anfang,Nz(Miet_Ende,Date))
Aber wie gesagt, m = ganze Monate.
Titel: Re: Abfrage Mietdauer berechnen
Beitrag von: Simsalabimel am Juni 11, 2016, 19:45:59
Danke dir TOP  ;D Mit NZ habe ich gerade eben recherchiert aber kannte ich vorher so nicht. Ja ich rechne mit Monaten da Tage bei Mietdauer weniger Sinn machen würden und die Zahlen auch alle dementsprechend keine Dezimalzahlen raus geben. Monats_Anfang war nur ein Tippfehler.

PS: Bis natürlich auf die 3 aktuellen Mieter mit den leeren Feldern.
Titel: Re: Abfrage Mietdauer berechnen
Beitrag von: MzKlMu am Juni 11, 2016, 19:51:48
Hallo,
mit Datediff kriegt man nie Dezimalzahlen.
Miete vom 01.06.2016 bis 15.06.2016 ergibt eine Mietdauer von 0 Monaten.
Miete vom 01.05.2016 bis 15.06.2016 ergibt eine Mietdauer von 1 Monat.
Vermietest Du immer nur ganze Monate ?
Titel: Re: Abfrage Mietdauer berechnen
Beitrag von: Simsalabimel am Juli 12, 2016, 20:46:35
Okay ich muss hier auch nochmal nachhaken und um eine alternativ Lösung bieten. Da ich auch diese Abfrage in Excel als Pivottabelle nutzen möchte kann ich die Funktion Datediff nicht verwenden. Habt ihr noch alternativ vorschläge??
Titel: Re: Abfrage Mietdauer berechnen
Beitrag von: Beaker s.a. am Juli 12, 2016, 21:48:16
Hallo,
Die direkte Suntraktion von Ende und Anfang ergibt die Differenz in Tagen,
ganz ohne DateDiff.
Durch 30 geteilt ergibt die Monate sogar als Dezimalzahl.
gruss ekkehard
Titel: Re: Abfrage Mietdauer berechnen
Beitrag von: Simsalabimel am Juli 12, 2016, 23:17:52
Danke durch 30 hab ich auch in erwägung gezogen gehabt. Nur was sind mit den Monaten die 31 haben und der Monat Februar aus ?! Wär das nicht etwas ungenau in der Beziehung?
Titel: Re: Abfrage Mietdauer berechnen
Beitrag von: Simsalabimel am Juli 13, 2016, 09:23:01
Danke Beaker soweit simpel und gut jedoch versuch ich noch die leeren Felder innerhalb der Felder Ende einzubeziehen. Wenn es leer ist soll er bis heute rechnen. Jetzt kommen wir zur Ausgangs Situation. Bietet sich da nicht IIF Funktion an ?
Titel: Re: Abfrage Mietdauer berechnen
Beitrag von: MzKlMu am Juli 13, 2016, 09:25:09
Hallo,
If braucht es da nicht, die Nz Funktion hilft.
Zeige bitte die Formel so wie Du diese verwendest.
Titel: Re: Abfrage Mietdauer berechnen
Beitrag von: Simsalabimel am Juli 13, 2016, 09:27:37
Okay ich habs jetzt hinbekommen
IIF(ISNULL(XY_Ende),Date(),XY_Ende)-XY_Anfang

irgendwas auszusetzen?
Titel: Re: Abfrage Mietdauer berechnen
Beitrag von: DF6GL am Juli 13, 2016, 09:41:37
Hallo,

das ist nicht die NZ-Funktion...

NZ(XY_Ende,Date())-XY_Anfang
Titel: Re: Abfrage Mietdauer berechnen
Beitrag von: MaggieMay am Juli 13, 2016, 11:24:33
Hi,
Zitat von: Simsalabimel am Juli 13, 2016, 09:27:37
irgendwas auszusetzen?
absolut nicht, die NZ-Funktion wird das wohl ähnlich lösen.
Titel: Re: Abfrage Mietdauer berechnen
Beitrag von: ebs17 am Juli 14, 2016, 21:30:26
Zitatirgendwas auszusetzen?

Klar. Wenn schon, dann ...
IIF(XY_Ende Is NULL, Date(), XY_Ende) - XY_Anfang

Eine SQL-Prüfung auf NULL ist mit nativen SQL-Anweisungen in  SQL effizienter. Die VBA-Funktion IsNull wird auch funktionieren, da VBA-Funktionen über den Expression Service in Jet-SQL nutzbar gemacht werden, aber immerhin passiert da Extra-Aufwand.

Die Variante, die ich zeigte, wird auch in Ausführung in Excel-VBA funktionieren (es soll ja vorkommen, dass Datenbankabfragen auch aus Excelmappen vorgenommen werden).
Dort wird die eingelagerte VBA-Funktion IsNull nicht funktionieren, und auch nicht die Access-Funktion Nz.