Autor Thema: ReplaceItemValue funktioniert so nicht => warum?  (Gelesen 1173 mal)

Offline Marshuhn

  • Junior Mitglied
  • **
  • Beiträge: 74
  • Geschlecht: Männlich
  • Have every day fun
ReplaceItemValue funktioniert so nicht => warum?
« am: 19.05.05 - 12:52:34 »
Hallo,

mal wieder ein Anliegen von mir.

Bei unserer Raumreservierung sollen nur noch Dokumente angezeigt werden, die nicht älter als 2 Tage sind und oder keine Wiederholungstermine sind.

Wir hatten uns zuerst entschieden, dass wir die Abfrage über die Ansichtsauswahl der Ansicht durchführen. Das führte dazu, dass vor Anzeige der Ansicht erst einmal 4 Sekunden eine Berechnung durchgeführt wurde.

Danach hatte wir uns umentschieden und wollen die Aussichtsauswahl über ein Feld im Dokument abgefragt werden. Hierzu hatten wir per Agent in jedes Dokument das Feld "Datum_Abgelaufen" mit dem Wert "Nein" eintragen lassen.

Jetzt haben wir einen Agenten erstellt, der nachts alle Dokuemte durchforsten soll, und nachschauen soll, ob ein Dokument älter als 2 Tage ist und kein Wiederholungstermin ist.

Wenn der Termin älter als 2 Tage ist, dann soll das Feld im Dokument mit "Ja" gefüllt werden. Leider funktioniert das nur nicht:

Hier ist der Code:

Code
Sub Initialize
	Dim s As New NotesSession
	Dim db As NotesDatabase	
	Dim dc As NotesDocumentCollection	
	Dim doc As NotesDocument	
	Dim nextdoc As Notesdocument
	Dim tmpdt As New NotesDateTime("")
	Dim purgedate As  New NotesDateTime	("Heute")
	Dim n As Integer	
	Dim StartDate As Variant
	Dim EndDate As Variant
	Dim OkToPurge As Integer
	Dim item As NotesItem
	Dim newItem As NotesItem
	Set db=s.CurrentDatabase
	Set dc=db.UnprocessedSearch("@Contains(Form;""Reservation"")", tmpdt,0)
	
	
	Call purgedate.AdjustDay (-2)
	Set doc=dc.GetFirstDocument
	
	
	While	Not (doc Is Nothing) 
		
		If doc.HasItem("$NoPurge") Then
			StartDate=doc.GetitemValue("$NoPurge")	
			
			
		Else
			StartDate=doc.GetitemValue("StartDateTime")	
		End If
		
		Forall eachstartdate In StartDate
			Dim tmpstartdate As New NotesDateTime(eachstartdate)
			If purgedate.TimeDifference(tmpstartdate)>0 Then
				
				OkToPurge=True
			Else
				
				OkToPurge=False	
				Goto DoNextDocument
			End If
			
		End Forall
		
		If OkToPurge Then	
			Set nextdoc=dc.GetNextDocument (doc)
			Zwischenwert2 = doc.GetitemValue("Form")
			
			If Zwischenwert2(0) ="Reservation" Then
				Set item = doc.ReplaceItemValue( "Datum_Abgelaufen", "Ja" )
							
				Call doc.Save(True, False)
			End If
		Else
			Call s.UpdateprocessedDoc(doc)
		End If		
		
DoNextDocument:		
		If doc Is Nothing Then
			Set doc=nextdoc			
		Else
			Set doc=dc.GetNextDocument (doc)		
		End If			
	Wend	
	
	
End Sub

Wo liegt der Fehler. Vielen Dank vorab schon einmal für die Antworten.

Marshuhn

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: ReplaceItemValue funktioniert so nicht => warum?
« Antwort #1 am: 19.05.05 - 13:10:43 »
Hi,

du brauchst hier nicht den Umweg über NotesItems zu gehen. Man kann die Felder direkt abfragen und setzen.


...
If OkToPurge Then
Set nextdoc=dc.GetNextDocument (doc)

If doc.Form(0) ="Reservation" Then
  doc.Datum_Abgelaufen = "Ja"
  Call doc.Save(True, False)
End If
...


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Marshuhn

  • Junior Mitglied
  • **
  • Beiträge: 74
  • Geschlecht: Männlich
  • Have every day fun
Re: ReplaceItemValue funktioniert so nicht => warum?
« Antwort #2 am: 19.05.05 - 13:26:47 »
Hallo Axel,

Du hast Recht. Der Agent lief auf dem Client ohne Probleme durch. Werde ich heute nacht noch auf dem Server laufen lassen.

Vielen Dank erst einmal

Marshuhn

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz