Autor Thema: Probleme mit ItemValue  (Gelesen 6732 mal)

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Probleme mit ItemValue
« am: 21.01.10 - 11:12:46 »
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ß
Gruß Jason

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Probleme mit ItemValue
« Antwort #1 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
Grüßle Toni :)

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Probleme mit ItemValue
« Antwort #2 am: 21.01.10 - 11:17:14 »
... 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.

Toni
Grüßle Toni :)

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Probleme mit ItemValue
« Antwort #3 am: 22.01.10 - 11:56:46 »
... 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

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ß
Gruß Jason

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Probleme mit ItemValue
« Antwort #4 am: 22.01.10 - 12:02:18 »
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

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

Bernhard
« Letzte Änderung: 22.01.10 - 12:08:47 von koehlerbv »

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Probleme mit ItemValue
« Antwort #5 am: 22.01.10 - 12:03:06 »
Hallo,

Hast die die Eigenschaften des Doks/der Doks nach dem Speichern schon einmal angesehen und kontrolliert, ob die Items wirklich nicht geschrieben wurden.

Ansonsten wuerde mir auf Anhieb nur einfallen, dass in den betreffenden Dokumenten die
verwendete Maske mit gespeichert wurde.


Andreas

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Probleme mit ItemValue
« Antwort #6 am: 22.01.10 - 12:40:03 »
Bernhard hat recht. Der Code wird in deinem Fall genau das tun was er soll.

Das ist ein klassisches Beispiel von "defensive programming", was ja an und für sich eine gute Sache ist um Fehler zu vermeiden, das an einer kleinen, aber entscheidenden Stelle in die Hose unauffällig in die Hose geht.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Probleme mit ItemValue
« Antwort #7 am: 22.01.10 - 13:07:57 »
Code
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))) 
else
 Call doc.ReplaceItemValue("Bestelldatum", (FieldArray(1)))
 Call doc.ReplaceItemValue("Lagernummer", (FieldArray(2)))
 Call doc.ReplaceItemValue("History","Bestellung erhalten am " &_
 FieldArray(1) & " vom Lager " & FieldArray(2)) 
End If
Call doc.Save(True,True)
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Probleme mit ItemValue
« Antwort #8 am: 22.01.10 - 13:17:43 »
Das ist noch doppelt gemoppelt, Anita. Wenn nicht, dann mach, wenn doch, dann mach auch ... Zu berücksichtigen wäre nur die Befüllung von "History".

Bernhard

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Probleme mit ItemValue
« Antwort #9 am: 22.01.10 - 13:26:10 »
Code
If Not itmHistory Is Nothing Then 
 Call itmHistory.AppendToTextList("Bestellung erhalten am " &_
 (FieldArray(1)) & " vom Lager " & (FieldArray(2))) 
else
 Call doc.ReplaceItemValue("History","Bestellung erhalten am " &_
 FieldArray(1) & " vom Lager " & FieldArray(2)) 
End If
Call doc.ReplaceItemValue("Bestelldatum", (FieldArray(1)))
Call doc.ReplaceItemValue("Lagernummer", (FieldArray(2)))

Call doc.Save(True,True)
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Probleme mit ItemValue
« Antwort #10 am: 22.01.10 - 13:29:36 »
 :D

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Probleme mit ItemValue
« Antwort #11 am: 22.01.10 - 13:34:54 »
Hallo,

danke Euch für den Denkanstoß und mitlerweile auch Lösung des Probs.

Ich  O0 , hab die Bedingung der Historie halt in der Reihenfolge völlig falsch gesetzt.

Jetzt is klar
Gruß und Danke
schöndes WE
Gruß Jason

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Probleme mit ItemValue
« Antwort #12 am: 22.01.10 - 14:42:58 »
Jason, ein heisser Tipp: Hättest Du den betreffenden Codeteil (den Du ja schon richtig identifiziert hast) im Debugger verfolgt, hättest Du Dir die Frage einfach selbst beantworten können.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz