Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Paddy24 am Februar 25, 2021, 21:41:04

Titel: SQL Abfrage für letzten Status um Feld zu füllen
Beitrag von: Paddy24 am Februar 25, 2021, 21:41:04
Hallo zusammen,

ein weiteres Thema wo ich derzeit dran hänge.

Ich habe eine Tabelle mit einem Von und Bis Datum. Das Von Datum wird vom Benutzer eingegeben. Das Bis Datum soll sich alleine füllen, wenn ein neues Von-Datum eingetragen wurde:

Bis_Datum_füllen.JPG

Ich habe mithilfe von Google und etwas eigenen folgende Abfrage bauen können, die im Screenshot zu sehen ist:

SELECT*, (SELECT Max(pszeit_von)
FROM tblPerson_Status_Zeitraum
WHERE pszeit_von < T1.pszeit_von AND per_id_f = per_id) AS letzterStatus
FROM tblPerson_Status_Zeitraum AS T1

Dadurch kann ich schon fast den vorletzten Status herausfiltern und das Bis-Datumsfeld füllen. Allerdings fehlt es mir auf den letzten Metern an Gedankengut um diese Abfrage in was brauchbaren zu wandeln.

Weiß jemand wie ich nun den vorletzten Eintrag selektieren kann damit ich das Bis-Feld füllen kann, wie im Screenshot veranschaulicht?


Vielen Dank im Voraus.

Beste Grüße
Patrick
Titel: Re: SQL Abfrage für letzten Status um Feld zu füllen
Beitrag von: DF6GL am Februar 26, 2021, 08:15:16
Hallo,

verstehe das nicht....Erkläre mal genauer und ausführlicher, was der Zweck des Ganzen ist.



Was bedeutet "-1 Tag"?

Warum soll das eingegebene "Von-Datum"  bei demjenigen DS eingesetzt werden, das dem DS mit dem "Letzter Status"-Datum entspricht?


Zudem sollten Berechnungsergebnisse  nicht in der Tabelle abgespeichert werden und auch keine Eingaben direkt in der Tabelle erfolgen.
(von einigen Ausnahmen abgesehen und der Möglichkeit von Tabellenfeld-Triggern/Makros)
Titel: Re: SQL Abfrage für letzten Status um Feld zu füllen
Beitrag von: Paddy24 am März 01, 2021, 09:01:16
Hallo,

was ich damit bezwecken wollte ist, das die Liste mit den Zeiträumen immer durchgehen ist, was sich im nachhinein aber als nicht nötig herausgestellt hat.

Aber im Grunde sollte es so funktionieren:

Du Tippst den ersten Zeitraum ein: Von=01.01.2021 Bis=Leer
Paar Tage später bekommst du neue Daten die du dort eintragen musst mit einem neuen Zeitraum
Also Tippst du den Zweiten Zeitraum ein: Von=14.01.2021 Bis=Leer

Da nun der zweite Zeitraum drin ist, muss sich logischerweise der erste "schließen". Und damit die Zeiträume keine Lücken enthalten wird das Bis-Datum des ersten Zeitraums mit dem Wert 13.01.2021 gefüllt.


Titel: Re: SQL Abfrage für letzten Status um Feld zu füllen
Beitrag von: DF6GL am März 01, 2021, 10:25:37
Hallo,


Zitatwas sich im nachhinein aber als nicht nötig herausgestellt hat.


dacht' ich mir's doch..    8)

Trotzdem (in einem Formular!):

Sub Form_Afterupdate()
Currentdb.Execute "Update tblEineTabelle Set pszeit_bis = " & Format(Me!pszeit_von-1,"\#yyyy-mm-dd\#") & " Where pszeit_bis is Null and pszeit_von = " & Format(Me!LetzterStatus,"\#yyyy-mm-dd\#"), dbFailOnError
Me.Requery   'Evtl.
End Sub