@If( @adjust( kaufdatum; 0 ; dauer; 0 ; 0 ; 0 ; 0 ) > @today ; "***"; " " ) ;
Hubert
Such mal in der Designer-Hilfe nach
farbe and spalte
und entscheide dann selbst, ob dir das zu aufwendig ist.
Hubert
Das ist mir zu aufwendig...
aber andere Frage: ich hab jetzt diese formel genommen...
@If( @Adjust( kaufdatum; 0 ; dauer; 0 ; 0 ; 0 ; 0 ) < @Today ; 120; @Adjust( kaufdatum; 0 ; dauer; 0 ; 0 ; 0 ; 0 ) > @Today;114;" ")
diese zeigt mir, ob etwas abgelaufen ist oder noch aktiv ist...
kann ich die formel auch umschreiben, das er mir zeigt, das in einem bestimmten zeitraum (3 monate vor ende) es abläuft...?
Also du hattest ja schon so etwas:
@If(
@Adjust( kaufdatum; 0 ; dauer; 0 ; 0 ; 0 ; 0 ) < @Today ; 120;
@Adjust( kaufdatum; 0 ; dauer; 0 ; 0 ; 0 ; 0 ) > @Today;114;
" ")
Die Formel besagt:
Wenn kaufdatum + dauer < heute -> 120
Wenn kaufdatum + dauer > heute -> 114
sonst " "
Du möchtest vermutlich haben:
Wenn
kaufdatum + dauer > heute -> "alles klar"
kaufdatum + dauer > heute - 30 -> "Warnhinweis"
sonst "abgelaufen"
heute - 30 drückt man wie folgt aus:
@Adjust( @today; 0 ; 0 ; -30; 0 ; 0 ; 0 )
Hubert
Sorry, ich meinte 30 Tage Warnzeitraum gelesen zu haben. Ich hoffe, das hat dich nicht verwirrt. Bei 3 Monaten sollte es so funktionieren:
_warnenAb := @Adjust(kaufdatum;0;dauer -3 ;0;0;0;0) ;
_ablauf := @Adjust( kaufdatum;0;dauer;0;0;0;0) ;
@If(
_ablauf < @Today ; 115 ;
_warnenAb < @Today & _ablauf > @Today ; 120 ;
114 )
Hubert
Sub Initialize
Dim s As notessession
Dim db As notesdatabase
Dim view As notesview
Dim doc, memo, ProfileDoc As notesdocument
Dim body As notesrichtextitem
Dim dtthen As notesdatetime, dtnow As notesdatetime
Set s = New notessession
Set db=s.currentdatabase
Set ProfileDoc = db.GetProfileDocument("PRFdoc_defaultVertrag")
Set view = db.getview("($AllDocID)")
Set doc = view.getfirstdocument
Do While Not (doc Is Nothing)
Set dtthen = doc.getfirstitem("ver_fruehesterkuentermin").DateTimeValue
If Not (dtthen Is Nothing) Then
Call dtthen.setAnyTime
Set dtnow= New notesdatetime("Today")
Call dtnow.setAnyTime
If dtnow.TimeDifference(dtthen)/86400 <= 5 Then
Set memo = db.createdocument
With memo
Call .replaceitemvalue("Form", "Memo")
Call .replaceitemvalue("Subject","Auslaufender Vertrag - " & doc.ver_firma(0))
Set body = .createrichtextitem("Body")
With body
Call .appendtext("Der "& doc.ver_art(0) &" für "& doc.ver_gegenstand(0) &" läuft demnächst aus. Hier ist das Dokument. ")
Call .appenddoclink(doc,"Bitte hier klicken","")
End With
Call .send(False, ProfileDoc.GetFirstItem("prfdoc_default_email"))
End With
End If
End If
Set doc = view.getnextdocument(doc)
Loop
End Sub
Kann mir jemand sagen, was dieser Teil hier macht:
Do While Not (doc Is Nothing)
Set dtthen = doc.getfirstitem("ver_fruehesterkuentermin").DateTimeValue
If Not (dtthen Is Nothing) Then
Call dtthen.setAnyTime
Set dtnow= New notesdatetime("Today")
Call dtnow.setAnyTime
If dtnow.TimeDifference(dtthen)/86400 <= 5 Then
Set memo = db.createdocument
Danke
Ich habe jetzt nach langer Zeit endlich die richtige Lösung gefunden...
Nun hab ich eine letzte Frage:
Ich habe in dem Profildokument ein Feld "prfdoc_default_warnen"
In diesem Feld wird der Warnzeitpunkt (in Tagen) eingeben, als Zahl.
Sub Initialize
Dim s As notessession
Dim db As notesdatabase
Dim view As notesview
Dim doc, memo, ProfileDoc As notesdocument
Dim body As notesrichtextitem
Dim dtthen As notesdatetime, dtnow As notesdatetime
Dim dateTime As New NotesDateTime( "Today" )
Dim dateTime_ As Variant
Dim maxdiff, difference As Long
Set s = New notessession
Set db=s.currentdatabase
' Profildokument
Set ProfileDoc = db.GetProfileDocument("PRFdoc_defaultVertrag")
Set view = db.getview("($AllDocID)")
Set doc = view.getfirstdocument
Do While Not (doc Is Nothing)
Set dtthen = doc.getfirstitem("ver_fruehesterkuentermin").DateTimeValue
If Not (dtthen Is Nothing) Then
Call dtthen.setAnyTime
Set dtnow= New notesdatetime("Today")
Call dtnow.setAnyTime
maxdiff = 90
' Differenzberechnung - Liefert einen negativen Wert zurück, deswegen am Ende *(-1)
difference = dtnow.TimeDifference(dtthen) / 86400 *(-1)
' Bedingung
If ( (difference > 0) And (difference < maxdiff)) Then
Set memo = db.createdocument
With memo
Call .replaceitemvalue("Form", "Memo")
Call .replaceitemvalue("Subject","Auslaufender Vertrag - " & doc.ver_firma(0))
Set body = .createrichtextitem("Body")
With body
Call .appendtext("Der "& doc.ver_art(0) &" für "& doc.ver_gegenstand(0) &" läuft demnächst aus. Hier ist das Dokument: ")
Call .appenddoclink(doc,"Bitte hier klicken","")
End With
Call .send(False, ProfileDoc.GetFirstItem("prfdoc_default_email"))
End With
End If
End If
Set doc = view.getnextdocument(doc)
Loop
End Sub
Im Moment ist der Warnwert fest in dem Agenten definiert.
Wie muss ich das jetzt umschreiben, damit der Wert aus dem Profildokument zieht?