Domino 9 und frühere Versionen > ND6: Entwicklung
Probleme mit ItemValue
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