Domino 9 und frühere Versionen > ND6: Entwicklung
Bekomme Fehler: "Error creating product object"
dabjoern:
--- Zitat von: umi am 15.08.05 - 11:42:57 ---evtl. hilft auch vor dem 1. next eine
set rtitem = nothing
--- Ende Zitat ---
Danach habe ich auch schon gesucht. Gute Idee. For "Next j" setze ich rtitem als Nothing. Wenn die Schleife wieder durchlaufen wird, müsste eigentlich das rtitem neu gesetzt werden. Tut es aber nicht. rtitem bleibt beim 2.Durchlauf leer. Und es kommt immer noch die selbe Error Message.
Gruß
Björn
Glombi:
Ich glaube, die Schleife wird gar nicht richtig durchlaufen.
Was macht denn das Call ReOpen(doc) ?´
Wo ist das Script denn - in einem Button?
Andreas
dabjoern:
--- Zitat von: Glombi am 15.08.05 - 12:02:59 ---Ich glaube, die Schleife wird gar nicht richtig durchlaufen.
Was macht denn das Call ReOpen(doc)?
--- Ende Zitat ---
Hier die Funktion ReOpen:
--- Code: ---Function ReOpen(docThis As NotesDocument) As Integer
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim dbThis As NotesDatabase
Dim unid As String
ReOpen = 0
Set dbThis = docThis.ParentDatabase
Call docThis.Save(True , True)
unid = docThis.UniversalID
docThis.SaveOptions = "0"
Set uidoc = ws.CurrentDocument
Call uidoc.Close
Set docThis = dbThis.GetDocumentByUNID(unid)
Set uidoc = ws.EditDocument(True , docThis)
Set docThis = uidoc.Document
If docThis.HasItem("SaveOptions") Then
docThis.RemoveItem("SaveOptions")
Call docThis.Save( True , True )
End If
ReOpen = 1
End Function
--- Ende Code ---
--- Zitat von: Glombi am 15.08.05 - 12:02:59 ---Wo ist das Script denn - in einem Button?
--- Ende Zitat ---
Ich habe das Skript in der Action Bar als Button hinterlegt.
Gruß
dabjoern
dabjoern:
Hier habe ich nochmal den überarbeiteten Code (leider erscheint immer noch o.g. Fehler):
--- Code: ---Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim ldoc As NotesDocument
Dim rtitem As NotesRichTextItem
Dim key As Variant
Dim counter As Integer
Dim linkName As String
Dim feldName As String
Dim fieldcounter(1 To 4) As String
Set db = session.CurrentDatabase
Set uidoc = ws.CurrentDocument
Call uidoc.Save
Set doc = uidoc.Document
fieldcounter(1) = "EB_counter"
fieldcounter(2) = "UB_counter"
fieldcounter(3) = "TB_counter"
fieldcounter(4) = "Coach_counter"
For i = 1 To 4
counter = uidoc.FieldGetText(fieldcounter(i))
For j = 1 To counter
linkName = "SO_Link_" + Cstr(i) + "_" + Cstr(j)
feldName = "SO_Name_" + Cstr(i) + "_" + Cstr(j)
key = uidoc.FieldGetText(feldName)
Set rtitem = New NotesRichTextItem(doc,linkName)
Set view = db.GetView("Person" )
Set ldoc = view.GetDocumentByKey(key)
If (key <> "") Then
If ldoc Is Nothing Then
Messagebox("Could not find document for " & key & ".")
Exit Sub
Else
Call uidoc.FieldClear(linkName)
Call rtitem.AppendDocLink(ldoc, "Link")
Call ReOpen(doc)
End If
Else
Call uidoc.FieldClear(linkName)
Call ReOpen(doc)
End If
Set rtitem = Nothing
Next j
Next i
End Sub
--- Ende Code ---
Weiß nicht mehr weiter... Danke für jede Hilfe.
Gruß
Björn
Edit: Ich glaube, es liegt an der Funktion ReOpen. Denn wenn ich die rausnehme, wird das rtitem problemlos neu gesetzt. Es wird nicht gemeckert. Jedoch wird auch kein Link erzeugt...
koehlerbv:
Du übergibst doc by reference an ReOpen - und in ReOpen wird die Instanz zerstört und neu aufgebaut. Innerhalb der äusseren Schleife beziehst Du Dich aber weiter auf doc - dass es dann beim zweiten Mal gar nicht mehr gibt - es wurde ja neu instantiiert.
Warum machst Du überhaupt jedes Mal und nicht erst nach dem Durchlaufen der Schleife ein ReOpen ?
Bernhard
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln