Autor Thema: Kann nicht Felder von Dokumenten per LS Skript verändern?  (Gelesen 1697 mal)

Offline immanuel

  • Senior Mitglied
  • ****
  • Beiträge: 461
  • Geschlecht: Männlich
    • Freshpixel Fotostudio
Hallo Zusammen

Ich bin an einer elektonischen Abwesenheitsdatenbank dran. In der DB sollen Dokumente getaggt/vermerkt werden, die ich später per Agent löschen möchte. Leider kann ich nicht per Lotus Script auf diese Dokumente, bzw. Felder der Dokumente zugreifen - das ist mein Problem.

Der Workflow ist so: Chef möchte einen bereits akzeptierten Ferienantrag wieder zurückrufen per "revove" Button. Die Funktion des Buttons ist, dass ein LS Script nach den als Ferien gebuchten Tagen sucht und diese dann über das Feld DeletionMark markiert. Mein Vorgänger der DB hatte zu löschende Einträge gleich mit dem Befehl Call aldoc.remove(True) gelöscht. Dies funktioniert im Gegensatz zu meiner Variante, erfordert aber Löschrechte für Mitarbeiter. Und genau das wollen wir nicht. Wir wollen, dass nur der Agent Löschrechte hat. Blöderweise kann ich das Feld DeletionMark nicht per LS ansteuern. Im Feld DeletionMark erscheint kein Eintrag. Ich habe es mit dem Code unten probiert, leider ohne Erfolg. Ich erhalte auch keine Fehlermeldung.

Code
	Dim aldoc As notesdocument
	Set aldoc = db.createdocument
	Dim nextdoc As notesdocument
	Dim dayofweek As Variant
	
	Dim view As notesview
	Set view = db.getview("(All Leave Allowances)")
	Dim calview As notesview
	Set calview = db.getview("Leave Forms")
	Dim reducedoc As notesdocument
	Dim tmpall As Double
	Dim tmpleft As Double

....
Code
          '  IF APPOINTMENT TYPE IS ANNUAL LEAVE
		Do While Not tmpstleav > tmpendleav
               ' Check if the day is between Monday and Friday, if not don't create leave form
			dayofweek = Weekday(tmpstleav)
			If dayofweek > 1 And  dayofweek < 7 Then
				Set aldoc = calview.getdocumentbykey(uidoc.fieldgettext("Requestor") & tmpstleav & "D") 
				If Not aldoc Is Nothing Then
					Set nextdoc = calview.getnextdocument(aldoc)
					Call aldoc.AppendItemValue("DeletionMark", "test") oder aldoc.DeletionMark = "test"
					Call aldoc.Save( False, True )
					'Call aldoc.remove(True)
				End If
				
			End If
			tmpstleav = tmpstleav + 1
		Loop


Code
Call aldoc.AppendItemValue("DeletionMark", "test") oder aldoc.DeletionMark = "test"
Der Code habe ich nur zur Veranschaulichung mit den beiden Varianten geschrieben  ;)


Sieht ihr Fehler oder habt ihr mir einen Tipp, was ich machen kann?
Danke für eure Hilfe im Voraus!

Lieber Gruss
Manuel
IBM Certified System Administrator - Lotus Notes and Domino 6/6.5

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Kann nicht Felder von Dokumenten per LS Skript verändern?
« Antwort #1 am: 12.06.07 - 14:55:31 »
Findet
Set aldoc = calview.getdocumentbykey(uidoc.fieldgettext("Requestor") & tmpstleav & "D")
überhaupt ein Dokument?

tmstleav ist ja offensichtlich ein Date/Time-Variant , und dass dann in einem Such-String? Finde ich nicht so prickelnd ...

Bernhard

Offline immanuel

  • Senior Mitglied
  • ****
  • Beiträge: 461
  • Geschlecht: Männlich
    • Freshpixel Fotostudio
Re: Kann nicht Felder von Dokumenten per LS Skript verändern?
« Antwort #2 am: 12.06.07 - 15:25:40 »
Hallo Bernhard

Ja, die Abfrage funktioniert so. Sie ist in der Tat nicht so prickelnd.  :)
Mit remove wurden die richtigen Dokumente gelöscht. Ich möchte sie aber nicht löschen, sondern zuerst zum Löschen markieren.

Gruss
Manuel
IBM Certified System Administrator - Lotus Notes and Domino 6/6.5

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Kann nicht Felder von Dokumenten per LS Skript verändern?
« Antwort #3 am: 12.06.07 - 15:57:58 »
Ich kann den Fehler nicht erkennen, insofern diese Zeilen tatsächlich ausgeführt werden:
aldoc.DeletionMark = "test"
Call aldoc.Save( False, True )

AppendItemValue ist ggf. gefährlich, weil hierdurch bereits vorhandene Items verdoppelt werden können. Besser wäre ReplaceItemValue oder die oben zitierte Variante.

Bernhard

Offline immanuel

  • Senior Mitglied
  • ****
  • Beiträge: 461
  • Geschlecht: Männlich
    • Freshpixel Fotostudio
Re: Kann nicht Felder von Dokumenten per LS Skript verändern?
« Antwort #4 am: 12.06.07 - 17:49:26 »
Danke fürs Testen!

Komisch, in der Testdatenbank habe ich es nochmals durchgespielt, nun funktionierte es mit:

aldoc.DeletionMark = "test"
Call aldoc.Save( False, True )         

Auch in der produktiven DB. Ich denke, dass der Fehler bem Save Code war. Den hate ich nämlich anders zuvor,

Vielen Dank!

Lieber Gruss
Manuel
IBM Certified System Administrator - Lotus Notes and Domino 6/6.5

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz