uesch
Goto Top

Problem mit einer Formel

Hi zusammen!

Ich suche eine Formel.
Folgende Aufgabenstellung:

Erzeugen sie ein Textfeld, in dem folgender Text erscheinen soll:
Wenn der Wert im Feld "Verleihdatum" länger als 30 Tage zurückliegt, soll erscheinen "seit über 30 Tagen fällig"; liegt der Wert mehr als 60 Tage zurück, soll erscheinen "seit x Tagen überfällig".
In allen anderen Fällen soll das Feld leer bleiben!

Also meine zusammengebastelte Formel lautet wie folgt:
=Wenn(Datum()-[Verleihdatum]>30;Wenn(Datum()-[Verleihdatum]>60;"überfällig seit x Tagen";"überfällig seit 30 Tagen");"")

Soweit so gut! Nur soll anstatt das x eben dann der genaue Abstand der Tage vom Verleihdatum bis zum heutigen Datum erscheinen....
Kann mir dabei jemand nen Denkanstoß verpassen? Die Lösung wäre natürlich auch nicht schlecht face-smile

MfG, Uesch


[Edit Biber] Im Juni 2008 immer noch ohne Feedback. Geschlossen. [/Edit]

Content-Key: 48452

Url: https://administrator.de/contentid/48452

Ausgedruckt am: 29.03.2024 um 15:03 Uhr

Mitglied: vip3234
vip3234 10.01.2007 um 22:09:13 Uhr
Goto Top
Hallo,

also ich versteh dein Problem nicht ganz; Was genau meinst du mit "anstatt x soll dann der genaue Abstand der Tage stehen " ? In welcher Progammiersprache soll das ganze denn ablaufen ?

Vip
Mitglied: vip3234
vip3234 10.01.2007 um 22:44:48 Uhr
Goto Top
In Visual Basic NET sieht das ganze so aus:

Programmcode start ---------------------------------------
'Variable für das Verleihdatum als Datumstyp definieren; Variable für die Ausleihdauer
'als Integer (ganze Zahlen) definieren
Dim verleihdatum As Date
Dim ausleihdauer As Integer

'Der Wert der Variable für das Verleihdatum wird gleich einem Textfeld für die Eingabe des
'Ausleihdatums gesetzt, alternativ auch aus einer Datenbank gelesen etc.
verleihdatum = txtverleihdatum.Text

'Die Differenz zwischen dem Ausleihdatum und der heutigen Datum wird berechnet und die
'Zeitdauer in ganzen Tagen angegeben
ausleihdauer = DateDiff(DateInterval.Day, verleihdatum, System.DateTime.Today)


'Sollte die Ausleihdauer größer 30 Tage sein bekommt das Textfeld txtnachricht einen Wert.
'Ist das nicht der Fall wird das Feld geleert.
If ausleihdauer > 30 Then
txtnachricht.Text = "seit über 30 Tagen fällig"
Else
txtnachricht.Text = ""
End If

'Ist die Ausleihdauer größer als 60 Tage so bekommt das Textfeld einen anderen Wert;
'im anderen Wert kommt die Variable "ausleihdauer" wieder vor und gibt somit den Wert x an
'seit wie vielen Tagen etwas ausgeliehen ist.
If ausleihdauer > 60 Then
txtnachricht.Text = "seit " & ausleihdauer & " Tagen überfällig"
End If

' Das Textfeld hier zu leeren ist nicht nötig, da die If-Anweisung sowieso nur abläuft wenn der Wert
' >30. Andernfalls ist das Textfeld sowieso schon von der oberen If-Anweisung geleert worden

Programmcode ende ---------------------------------------

Alle Zeilen mit einem ` voraus werden von VB NET nicht gelesen, sind also lediglich Kommentare.

Falls benötigt kann ich das Programm auch per eMail zusenden.

VIp
Mitglied: Biber
Biber 10.01.2007 um 23:19:09 Uhr
Goto Top
... oder, wenn Du ganze in die Formel oben pressen willst:

=Wenn(Datum()-[Verleihdatum]>30;Wenn(Datum()-[Verleihdatum]>60;"überfällig seit "& Datum()-[Verleihdatum] & " Tagen";"überfällig seit mehr als 30 Tagen");"")

... wobei ich vip3234's Ansatz auf jeden Fall vorziehen würde.
Denn Einzeiler können immer vergleichsweise wenig Kommentarzeilen verkraften und sind deshalb naturbedingt etwas schlecht les- und wartbar.

Gruß
Biber
Mitglied: bastla
bastla 11.01.2007 um 00:12:11 Uhr
Goto Top
@vip3234

... und wenn Du schon dabei bist, Nachhilfe zu geben, könntest Du vielleich noch ein "Select Case" unterbringen ...

Grüße
bastla
Mitglied: vip3234
vip3234 11.01.2007 um 00:19:06 Uhr
Goto Top
@bastla

könnte man. Theoretisch müsste man auch abfragen ob im textfeld txtverleihdatum.text auch wirklich ein Datum drin steht, damits keinen Typenkonflikt gibt.

Von daher kann man das immer noch erweitern. Aber so ist es eben recht einfach und zweckmäßig. Allerdings ist ja auch noch nicht klar, wie das ganze programmiert werden soll oder ob das nur ein Gedankenexperiment ist etc....