Autor Thema: Fehlermeldung bei Call Dokument.Save(True,False)  (Gelesen 8978 mal)

Offline bawener

  • Frischling
  • *
  • Beiträge: 2
Fehlermeldung bei Call Dokument.Save(True,False)
« am: 09.09.14 - 21:32:55 »
Hallo zusammen,

Wahrscheinlich habe ich einen Frischling Fehler gemacht, aber ich finde ihn nicht.
Kurze Beschreibung:
Wir arbeiten mit einer mächtigen Datenbank, hier werden Kalkulationen für Bauteile und Produkte erstellt. Aus diesen Kalkus werden dann Angebote, Lieferscheine und Rechnungen generiert.

Der folgende Agent sollte Zuschläge auf die einzelnen Positionen der Produkte aus einer Ansicht (beinhaltet die Projektinformationen und vordefinierte Zuschläge) ziehen und dann auf die einzelnen Positionsdokumente übertragen. Es schein alles zu funktionieren nur bei
Call Dokument.Save(True,False) bekomme ich die Fehlermeldung "Object variable not set"

Hoffe ich habe es einigermaßen verständlich erklärt.
Hier noch der Code:

Sub Initialize
   Dim Sitzung As New NotesSession
   Dim Workspace As New NotesUIWorkspace
   Dim Dokumente As NotesDocumentCollection
   Dim Dokument As NotesDocument
   Dim IsCase As Integer
   Dim TempString As String
   Dim ID As String
   Dim Projektnummer As String
   Dim Casenummer As String
   Dim Gewaehlt As Variant
   Dim XXX As Variant
   
   Dim uiview As NotesUIView 'BH für deselect all
   Set uiview = Workspace.CurrentView 'BH für deselect all
   
   Set Dokumente = Sitzung.CurrentDatabase.UnprocessedDocuments  'BH
   Set Dokument = Dokumente.GetFirstDocument  'BH

   ID = Dokument.ID(0) +"//"+Dokument.Beleg_ID(0)   
   Set Kalkumaske = Sitzung.CurrentDatabase.GetView ("(lookup Zuschlag)") ' Ansicht holen
   Set XXX = Kalkumaske.GetEntryByKey (ID, True)
   
   ZMat = Dokument.ZMat(0)
   ZFert = Dokument.ZFert(0)
   ZVV = Dokument.ZVV(0)      
   ZGew = Dokument.ZGew(0)
   ZVer = Dokument.ZVer(0)
   ZSko = Dokument.ZSko(0)
   ZRab = Dokument.ZRab(0)
   
   Set Dokumente = Sitzung.CurrentDatabase.UnprocessedDocuments
   Set Dokument = Dokumente.GetFirstDocument
   While Not Dokument Is Nothing
      ID = Dokument.ID(0) +"//"+Dokument.Beleg_ID(0)
      Set Lookup = Sitzung.CurrentDatabase.GetView ("(emb Rechnungspositionen)") ' Ansicht holen
      Set Eintrag = Lookup.GetEntryByKey (ID, True)
      
      Dokument.GKZ_Material = ZMat    'Zuschlag Material
      Dokument.GKZ_Fertigung = ZFert  'Zuschlag Fertigung
      Dokument.GKZ_Verw = ZVV          'Zuschlag Verwaltung & Vertieb
      Dokument.GKZ_Gewinn = ZGew    'Gewinnzuschlag
      Dokument.VZuschlag = ZVer         'Verhandlungszuschlag
      Dokument.Skonto = ZSko             'Skonto
      Dokument.Rabatt = ZRab              'Rabatt
      Dokument.Zuschlag_Gesamt = (ZMat + ZFert + ZVV + ZGew + ZVer + ZSko + ZRab) / 100 'das ganze durch 100 um Faktor zu bekommen, dient der Übersicht
      
      
      Set Dokument = Dokumente.GetNextDocument(Dokument)
      Call Dokument.Save(True,True,True)
   Wend
   

End Sub

Danke für Eure Geduld
bhawener

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Fehlermeldung bei Call Dokument.Save(True,False)
« Antwort #1 am: 09.09.14 - 22:52:31 »
Hallo und Willkommen hier im Forum!

Ich schreib einfach mal, was mir auffällt:
Die folgenden Codezeile hast du doppelt im Script. Einmal ziemlich am Anfang, dann nochmal vor der While-Schleife. Ist das gewollt?
Code
 Set Dokumente = Sitzung.CurrentDatabase.UnprocessedDocuments  'BH
Set Dokument = Dokumente.GetFirstDocument  'BH
ID = Dokument.ID(0) +"//"+Dokument.Beleg_ID(0)   

Code
 Set Kalkumaske = Sitzung.CurrentDatabase.GetView ("(lookup Zuschlag)") ' Ansicht holen
Set XXX = Kalkumaske.GetEntryByKey (ID, True)
Was die Zeilen machen ist mir aus dem Code heraus nicht ganz klar. Sie werden scheinbar nicht gebraucht. Ich wollte auch noch darauf hinweisen, dass du einer "KalkuMASKE" eine View zuweist. ;)
Zudem hast du eine UIView deklariert und nutzt sie im Script ebenfalls gar nicht.

Dein Problem dürfte aber sein, dass du wohl ein offenes Dokument hast welches du änderst, dann ein neues Dokument lädst und dann versuchst das Dokument, das du geändert hattest, zu speichern.
Code
Dokument.Zuschlag_Gesamt = (ZMat + ZFert + ZVV + ZGew + ZVer + ZSko + ZRab) / 100 'das ganze durch 100 um Faktor zu bekommen, dient der Übersicht
Set Dokument = Dokumente.GetNextDocument(Dokument)
Call Dokument.Save(True,True,True)
Wend
Das ist ein wenig die falsche Reihenfolge.

Du holst dir auch einmal ein Eintrag (Set Eintrag = Lookup.GetEntryByKey (ID, True)) aber verarbeitest ihn nicht weiter.
Macht das Script denn das, was es soll? Es fällt mir ein wenig schwer es nachzuvollziehen.


Achja. Und der Thread ist in der falschen Kategorie  ;)

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline bawener

  • Frischling
  • *
  • Beiträge: 2
Re: Fehlermeldung bei Call Dokument.Save(True,False)
« Antwort #2 am: 10.09.14 - 08:54:42 »
Hallo Klafu,
erst mal vielen Dank für die schnelle Antwort,
das mit den doppelten Einträgen und der falschen Reihenfolge kann durchaus sein, bin leider noch nicht so ganz Fit in dem Thema.

Werde heute mal das Script überarbeiten und alles was doppelt scheint eliminieren.
Die Reihenfolge versuche ich auch zu verbessern.
Also werde ich es neu aufbauen und versuchen es auch besser zu verstehen.
Falls dann noch etwas auftritt werde ich hier zwangsläufig wieder auftauchen.
Wenns funktioniert natürlich mit dem richtigen Script auch.

Grüsse
bhawener

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz