Autor Thema: Script Error:Nicht alle Dokumente werden verarbeitet  (Gelesen 2665 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