Autor Thema: Script Error:Nicht alle Dokumente werden verarbeitet  (Gelesen 2620 mal)

Offline Jörg

  • Aktives Mitglied
  • ***
  • Beiträge: 175
Hi @all,

Ich habe mir ein script geschrieben , mit dem ich mir alle Dokumente mit gewissen
Definitionen aus einer View filtere und jeden gefundene Dokument kopiere.
Danach soll das Dokument bearbeitet werden.
Zum Schluss möchte ich ein Item löschen und es neu erzeugen lassen.

Hier erstmal der Code:
Code
Option Public
Sub Initialize
	
'	Dim ws As New NotesUIWorkspace
	Dim session As New NotesSession	
	Dim docThis As NotesDocument
	Dim db As NotesDatabase
	Dim view As NotesView
	Dim doc As NotesDocument
	Dim doc2 As NotesDocument
	Dim nav As NotesViewNavigator
	Dim counter As Long
	Dim actcounter As Long
	Dim x As Variant
	Dim y As Variant
	Dim z As Variant
	Dim success As Variant
	
	
	Set db = session.CurrentDatabase
	Set view = db.GetView( "Serien-Geräte" )
	Call view.Refresh
	 REM Create navigator for entire view and get count
	Set nav = view.CreateViewNav()
	'Messagebox nav.Count,, "Number of entries in view"
	actcounter = nav.Count
	counter= 0
	If Not view Is Nothing Then
		Set doc = View.GetFirstDocument()
		While Not doc Is Nothing
			
			Set oDocnext = View.GetNextDocument(Doc)	
						
			y =Doc.GetItemValue("form")(0)
			z= Doc.GetItemValue("Hide_kategorie")(0)
			x= Doc.GetItemValue("Serie")(0)
			counter= counter +1 
			
			If y ="dokument_kopf" And z= "Serien-Geräte" Then
				If x = "2011" Then
					
					counter = counter + 1
					Set doc2 = doc.Copytodatabase(db)
						
					Dim oldtitel As String
					oldtitel =Doc.GetItemValue("titel")(0)
					oldtitel = Left$(oldtitel, Len(oldtitel)-4)	
					doc2.titel = oldtitel + "2012"
					doc2.Serie= "2012"
					Call doc2.Removeitem("ID_MainDOC")
					success = doc2.ComputeWithForm( False, False )
					If success Then
						Call doc2.Save( True, True )
					End If
				End If	
			End If
			
			If counter =actcounter Then 			
				Exit Sub				
			End If
			Set Doc=oDocnext		
		Wend
	End If
End Sub

Nun scheint es so das manchmal das Item "ID_MainDOC" durch den Befehl "ComputeWithForm" nicht
angelegt wird.
Wie kann ich sicherstellen das hier immer das Dokument erst dann gespeichert wird,
wenn das Feld vorhanden und mit der DocID gefüllt wurde.

Danke schon mal vorab.....

Gruß Jörg

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Script Error:Nicht alle Dokumente werden verarbeitet
« Antwort #1 am: 05.01.12 - 17:48:01 »
Scheint es so - oder ist es so? Wenn es Dir nur so scheint, dann suche weiter, ob ID_MainDOC nun erzeugt wird oder nicht.

Angenommen, es "scheint" nicht nur so, sondern es es ist ein Faktum:
Es wäre interessant zu erfahren, wie Deine Maske ID_MainDOC erzeugt. So ganz unerheblich ist das ja nicht. Du solltest auch das Resultat von ComputeWithForm abfragen und prüfen. Und dabei immer bedenken: Jede programmierte Aktion in der Maske kann ComputeWithForm ein Bein stellen.

Um das Speichern zu verhindern: Du brauchst vor dem doc2.Save doch nur abfragen, ob ID-DocMain (0) leer ist oder nicht.

Bernhard

Offline Jörg

  • Aktives Mitglied
  • ***
  • Beiträge: 175
Re: Script Error:Nicht alle Dokumente werden verarbeitet
« Antwort #2 am: 06.01.12 - 07:59:54 »
Hallo,

in den Feld "ID_MainDOC" steht folgende Formel drin:
Code
@If(ID_MainDOC ="";@Text(@DocumentUniqueID);ID_MainDOC)
Wenn ich eine Abfrage erstelle ob das Feld leer ist, dann hat das kopierte
Dokument in der view die selben Daten wie das original Dokument.

Daher stellt sich mir die Frage wann ein kopiertes Dokument eine neue "DocumentUniqueID" erhält.

GRuß Jörg

Driri

  • Gast
Re: Script Error:Nicht alle Dokumente werden verarbeitet
« Antwort #3 am: 06.01.12 - 08:47:48 »
Bei CopyToDatabase bleibt die UniqueID erhalten, außer diese existiert schon in der Datenbank.

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Script Error:Nicht alle Dokumente werden verarbeitet
« Antwort #4 am: 06.01.12 - 08:52:05 »
Hi
Ist das Feld ID_MainDoc berechnet oder berechnet beim Anlegen ?
Du könntest es sonst auch via Script abfüllen.
Code
if success then
 call doc2.save(true,false)
 call doc2.replaceitemvalue("ID_MainDoc",doc2.universalid)
 call doc2.save(true,false)
end if
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline Jörg

  • Aktives Mitglied
  • ***
  • Beiträge: 175
Re: Script Error:Nicht alle Dokumente werden verarbeitet
« Antwort #5 am: 06.01.12 - 09:18:54 »
Super hat mit den letzten Informationen geklappt...

Merci

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz