Autor Thema: wert aus einer zeitreihe löschen (liste)  (Gelesen 2287 mal)

Offline Tobi2283

  • Frischling
  • *
  • Beiträge: 31
  • Geschlecht: Männlich
wert aus einer zeitreihe löschen (liste)
« am: 08.08.06 - 09:18:17 »
hallo und guten morgen zusammen,

ich habe das problem, dass in einer datenbank ein import vorgenommen wurde, um eine zeitreihe mit insgesamt 6 verschiedenen feldern zu aktualisieren. der import ist leider voll in die hose gegangen(nicht das import-modul war übrigens fehlerhaft, sondern die datei, aus der importiert wurde). nun möchte ich, damit nicht alles per hand korrigiert werden muss, mittels agent die bestimmte zeitreihe löschen. die o.g. felder beinhalten 1 datumsfeld sowie 5 zahlenfelder.

muss vorab noch sagen, dass ich zum teil mit script etwas unbedarft bin. :-\
ich hab mir da folgenden löschungsansatz ausgedacht.

ich neh ein doc nach dem anderen und prüfe, ob ein gewisses datum darin erfasst ist (hier: 30.06.2006). wenn ja, dann soll das script den listtag in einer variablen speichern und anschließend von allen 6 feldern den eintrag mit dem vorher in der variablen gespeicherten listtag löschen.
anschließend soll das nächste doc geprüft werden.
an sich - so denk ich mal - ein logischer aufbau.

jetzt hapert es an der umsetzung. und zwar - und jetzt bitte nicht lachen - kann ich die werte aus dem notesdocument nicht auslesen.
ich habs mit

set datum = doc.getitemvalue("datum")

versucht, klappt jedoch nicht, der debugger sagt "type mismath".
wie muss ich das dann schreiben, damit ich die liste her bekomme.

bereits vorab den besten dank.

tobias

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: wert aus einer zeitreihe löschen (liste)
« Antwort #1 am: 08.08.06 - 09:20:33 »
GetItemValue gibt ein Array zurück.

dim vDate as Variant

vDate = doc.GetItemValue( "Datum" )(0 )
.....
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

botschi

  • Gast
Re: wert aus einer zeitreihe löschen (liste)
« Antwort #2 am: 08.08.06 - 09:29:42 »
Das Feld "datum" hat mehrere Werte, also eine Liste?
Dann musst Du die Liste an eine Variable übergeben, die auch Listen verwalten kann. Was ist <datum> denn für ein Variablentyp?

Das ist aus der Designer Onlinehilfe, die übrigens ziemlich gut ist:

Dim total As Integer
Dim money As Variant
total = 0
money = doc.GetItemValue( "quarterlyRevenue" )
Forall m In money
  total = total + m
End Forall

Ein Variant kann Listen verwalten.
Jetzt musst Du nur noch gucken, wie man aus einem Array einen Eintrag löschen kann.
ArrayReplace wäre vielleicht ein Kandidat.

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: wert aus einer zeitreihe löschen (liste)
« Antwort #3 am: 08.08.06 - 15:50:34 »
Aus einem Array eine Wert rausschmeißen ist einfach. Mit einem leeren Wert füllen und anschließend ein FullTrim über das Array machen.
Erklärung siehe Online Hilfe.
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 Tobi2283

  • Frischling
  • *
  • Beiträge: 31
  • Geschlecht: Männlich
Re: wert aus einer zeitreihe löschen (liste)
« Antwort #4 am: 10.08.06 - 15:55:07 »
danke für die super ansätze, hab jetzt meinen agenten soweit fertig, leider bin ich bei einem probelauf auf ein weiteres problem gestoßen

in der zeitreihe sind z.T. auch Null-Werte enthalten, welche jedoch richtig sind und nicht gelöscht werden sollen.
habe mir etwas gebastelt, dass die nullwerte durch neue wertzuweisung schützen soll.

nunmehr kann ich die geänderten werte aber nicht mehr in das dokument zurückspeichern, sagt mir irgendwas mit "notes error: NotesItem cannot be set to an array of mixed data types".

hm...
grübel, grübel, hab schon einiges wieder zusammengedoktert, aber hilft alles nichts,

hier mal ein auszug aus dem script:


Do Until doc Is Nothing
      insgesamt = insgesamt + 1
      Print insgesamt, doc.UniversalID
      
      vdate = doc.GetItemValue("ZR_INFOPER")
      d = Arraygetindex (vdate, "30.06.2006")
      
      
      If d >= 0 Then
         mitReihe = mitReihe + 1
         
         Dim Soll As Variant
         Dim SiW As Variant
         Dim Blanko As Variant
         Dim EWB As Variant
         Dim EWBN As Variant
         
         Soll = doc.GetItemValue("ZR_GSoll")
         SiW = doc.getitemvalue("ZR_SiW")
         Blanko = doc.GetItemValue("ZR_Blanko")
         EWB = doc.GetItemValue("ZR_EWB")
         EWBN = doc.GetItemValue("ZR_EWB_neu")
         
         
         
         ' Nullwerte vor Löschung schützen
         Dim anzahl As Variant
         anzahl = Ubound(SiW)
         For i = 0 To anzahl
            If SiW(i) = 0 Then
               SiW(i) = 99999
            End If
            If Blanko(i) = 0 Then
               Blanko(i) = 99999
            End If
            If EWB(i) = 0 Then
               EWB(i) = 99999
            End If
            If EWBN(i) = 0 Then
               EWBN(i) = 99999
            End If
         Next
         
         
         
         ' 30.06.2006 durch Leerzeichen ersetzen
         vdate(d) = leer
         Soll(d) = leer
         SiW(d)= leer
         Blanko(d) = leer
         EWB(d) = leer
         EWBN(d) = leer
         
         ' Leerzeichen entfernen
         vdate = Fulltrim(vdate)
         Soll = Fulltrim(Soll)
         SiW = Fulltrim(SiW)
         Blanko = Fulltrim(Blanko)
         EWB = Fulltrim(EWB)
         EWBN = Fulltrim(EWBN)
         
         
         
         'Nullwerte nach Löschung rückgängig machen
         anzahl = Ubound(SiW)
         For i = 0 To anzahl
            If SiW(i) = 99999 Then
               SiW(i) = 0
            End If
            If Blanko(i) = 99999 Then
               Blanko(i) = 0
            End If
            If EWB(i) = 99999 Then
               EWB(i) = 0
            End If
            If EWBN(i) = 99999 Then
               EWBN(i) = 0
            End If
         Next
         
         doc.ZR_INFOPER = vdate
         doc.ZR_GSoll = Soll
         doc.ZR_SiW = SiW
         doc.ZR_Blanko = Blanko
         doc.ZR_EWB = EWB
         doc.ZR_EWB_neu = EWBN
         Call doc.save(False, False)
         
      Else


hier irgendwo ein lösungsansatz, denke mal, dass ich einen text als null gesetzt habe, obwohl es eine zahlenliste ist. aber wie kann ich das umgehen?!?

hab auch schon versucht, ein feld in einer variablen zu speichern, welche eine null enthält, jedoch wenn ich dann die 99999 durch diese variable ersetzte, sieht man im debugger, wie als inhalt (variant()) eingesetzt wird.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz