Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: iworks am 10.10.08 - 17:32:26
-
Hi Leute,
komme mit diesem code (agent) nicht ganz klar bzw. meldet notes "error creating product object".
Ziel ist es nur 3 Feldinhalte aus einer Maske zu kopieren und mit diesen Werten ein neues Document (aber andere Maske) zu erstellen.
Hier der LS Code:
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim kundenname_item As NotesItem
Dim projektname_item As NotesItem
Dim kundennummer_item As NotesItem
Dim kundenname As String
Dim projektname As String
Dim kundennummer As String
Dim projekt As NotesDocument
Dim projektprofil As NotesDocument
Dim doc As notesdocument
Dim dc As NotesDocumentCollection
Set db = session.CurrentDatabase
Dim neueDB As NotesDatabase
Set view = db.GetView( "($Kunden_KundenNr)" )
Set doc = view.GetFirstDocument
While Not ( doc Is Nothing )
Set kundenname_item=doc.GetFirstItem("Kunde")
Set projektname_item=doc.GetFirstItem("Projektbezeichnung")
Set kundennummer_item =doc.getfirstitem("nKundenNr")
kundenname=kundenname_item.Text
projektname=projektname_item.Text
kundennummer=kundennummer_item.Text
Set projekt = New NotesDocument(neueDB ) "Hier bleibt der Debugger stehen, dann die Meldung"
projekt.Form = "Projekt"
projekt.nProKunde= kundennamen
projekt.nProProjektbez= projektname
projekt.nProKdNr = kundennummer
Call projekt.Save( True,False )
Call doc.save(True,False, True)
Set view = db.GetView( "($agent)" )
Set doc = view.GetFirstDocument
Wend
End Sub
-
Das Object "neueDB" wurde auch keiner existierenden NotesDatabase zugewiesen. Das hätte der Debugger aber auch angezeigt ...
Bernhard
-
Hallo Bernhard,
ja nee sorry der Code stimmt gar nicht, habe einiges übersehen.
Hier noch mal, der tuts auch:
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim kundenname_item As NotesItem
Dim projektname_item As NotesItem
Dim kundennummer_item As NotesItem
Dim kundenname As String
Dim projektname As String
Dim kundennummer As String
Dim projekt As NotesDocument
Dim projektprofil As NotesDocument
Dim doc As notesdocument
Dim dc As NotesDocumentCollection
Set db = session.CurrentDatabase
Dim neueDB As NotesDatabase
Set view = db.GetView( "($Kunden_KundenNr)" )
Set doc = view.GetFirstDocument
While Not ( doc Is Nothing )
Set kundenname_item=doc.GetFirstItem("Kunde")
Set projektname_item=doc.GetFirstItem("Projektbezeichnung")
Set kundennummer_item =doc.getfirstitem("nKundenNr")
kundenname=kundenname_item.Text
projektname=projektname_item.Text
kundennummer=kundennummer_item.Text
Set doc = db.CreateDocument
doc.Form = "Projekt"
doc.nProKunde= kundennamen
doc.nProProjektbez= projektname
doc.nProKdNr = kundennummer
Call doc.save(True,False, True)
Set view = db.GetView( "($Kunden_KundenNr)" )
Set doc = view.GetFirstDocument
Wend
End Sub
-
Zwei Dinge fallen mir auf.
1) Dim neueDB... kannst Du dir sparen. Zumindest taucht neueDB nirgendwo im weiteren Verlauf auf.
2) Was glaubst Du, wird in dieser Schleife passieren, wenn Du immer wieder das erste Dokument der View verarbeitest ?
Das "Set view = ..." kannst Du dir in der While-Schleife auch sparen.
While Not ( doc Is Nothing )
...
Set view = db.GetView( "($Kunden_KundenNr)" )
Set doc = view.GetFirstDocument
Wend
-
... vermutlich kommt kein "error creating product object" mehr - dafür will er aber nach allen Erkenntnissen nicht mehr aufhören... ;D
Toni