Domino 9 und frühere Versionen > ND6: Entwicklung

Probleme mit ItemValue

(1/3) > >>

lotus blue:
Hallo Leute,

hab da ein kleines Problem und benötige euren Rat.

Der Agent "Bestelldatum" übernimmt einen Wert aus einer txt-Datei und schreibt diesen über Nacht in ein Feld.
Da diese Werte oft aktualisiert werden, überschreibt er den Feldinhalt.

Das ganze geschieht mit
Then
Call doc.ReplaceItemValue ("Feldname1", (FieldArray1)))
Call doc.ReplaceItemValue ("Feldname2", (FieldArray2)))
usw.

So weit so gut.

Nun ist mir aber aufgefallen, dass bei ein paar alte Dok´s zwar angefasst werden, aber die Werte nicht reingeschrieben werden.
Nach einem Blick in die Eigenschaften der Dokumente ist M.E. klar warum.

Es handelt sich hierbei um Dok´s die vor einiger Zeit per Agent angelegt wurden und damals die Felder Feldname1 und Feldname2 nicht mit angelegt wurden.

Somit kann der jetztige Agent diese Felder ja nicht überschreiben.

Was würdet ihr nun machen?
Per Agent diese fehlenden Felder noch hinzuzufügen?
Die fehlenden Felder im jetzigen Agent "Bestelldatum" anlegen zu lassen? ???

Gruß

ata:
... wenn ich das richtig weiß, kann dies nicht der Grund sein. Die Felder werden angelegt, wenn sie noch nicht vorhanden waren - da scheint eher vor dem Save ein Ausstieg zu sein...

Toni

ata:
... hier der Auszug aus der Hilfe:

--- Zitat --- If the document does not contain an item with the specified name, the method creates a new item and adds it to the document.
--- Ende Zitat ---

Toni

lotus blue:

--- Zitat von: ata am 21.01.10 - 11:15:11 ---... wenn ich das richtig weiß, kann dies nicht der Grund sein. Die Felder werden angelegt, wenn sie noch nicht vorhanden waren - da scheint eher vor dem Save ein Ausstieg zu sein...

Toni

--- Ende Zitat ---

Zunächst mal danke Dir für das Feedback.

Puh. Das ist jetzt gut (dann paßt die Passage  :D) und auch wieder schlecht ( ??? weil ich die Fehlerquelle noch nicht hab)
Nehme folgenden Agenten her:

Sub Initialize
   Dim session As New notessession
   Dim db As notesdatabase
   Dim doc As Notesdocument, profdoc As Notesdocument
   Dim Dateipfad As String, aktfile As String
   Dim fileNum As Integer, cells As Integer, k As Long
   Dim fileName As String
   Dim InputStr As String, delimiter As String
   Dim FieldArray As Variant
   Dim view As NotesView
   Dim agent As NotesAgent
   Dim itmHistory As NotesItem  ' Historyfeld
   Set db = session.currentdatabase
   Set profdoc = db.getprofiledocument("(Konfiguration)")
   Dateipfad = profdoc.Dateipfad_3(0)
   fileNum = Freefile()
   Set view = db.GetView ("Alle Bestellungen")
   Set agent = db.GetAgent("Bestellungen")
'Trennzeichen
   delimiter = ";"
   
   aktfile = Dateipfad
   If aktfile <> "" Then 
      Open aktfile For Input As fileNum%   
      Do While Not Eof(fileNum%)
         Line Input #1,  InputStr$
         FieldArray = Split(InputStr$,delimiter)
         If Not Isempty(FieldArray) Then
            Set doc = view.GetDocumentByKey(FieldArray(0))
            If Not doc Is Nothing Then
               Set itmHistory = doc.GetFirstItem("History")
               If Not itmHistory Is Nothing Then
                  Call doc.ReplaceItemValue("Bestelldatum", (FieldArray(1)))
                  Call doc.ReplaceItemValue("Lagernummer", (FieldArray(2)))
                  Call itmHistory.AppendToTextList("Bestellung erhalten am " &_
                  (FieldArray(1)) & " vom Lager " & (FieldArray(2)))
                  Call doc.Save(True,True)
               End If
            End If
         End If
      Loop
   End If
   Close fileNum%
   agent.Run
End Sub

Fällt jemanden vielleicht was bzgl. der Problematik auf?
Tappe im Dunklen.

Gruß

koehlerbv:
Der Code tut doch, was er soll:

--- Code: ---               Set itmHistory = doc.GetFirstItem("History")
               If Not itmHistory Is Nothing Then
                  Call doc.ReplaceItemValue("Bestelldatum", (FieldArray(1)))
                  Call doc.ReplaceItemValue("Lagernummer", (FieldArray(2)))
                  Call itmHistory.AppendToTextList("Bestellung erhalten am " &_
                  (FieldArray(1)) & " vom Lager " & (FieldArray(2)))
                  Call doc.Save(True,True)
               End If
--- Ende Code ---

Wenn es das Item noch nicht gibt, macht der Code auch nichts. Wo liegt also Dein Problem?

Bernhard

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln