Autor Thema: forall item in doc.items  (Gelesen 6464 mal)

Offline goldi003

  • Frischling
  • *
  • Beiträge: 18
  • Geschlecht: Männlich
  • In vino veritas
forall item in doc.items
« am: 02.05.07 - 09:43:32 »
Hallo Zusammen!
Ich habe da ein Problem und bin leider mit meinem Lotus Script Kenntnissen am Ende!
Gut zugegeben die sind nicht groß!!  ;)

Ziel ist es in einem Dokument alle Felder durchzugehen und wenn ein Feld eine Zahl ist und am eine ein "P" hat, dann soll dieser Wert bearbeitet werden!

habe nun folgenden Code den ich in einem Agent aufrufe!

Sub Initialize
   Dim s As New NotesSession
   Dim w As New NotesUIWorkspace
   Dim colSelect As NotesDocumentCollection
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim uidoc As NotesUIDocument
   Dim fielditem As NotesItem
   Dim var As Double

   Set db= s.CurrentDatabase
   
   Forall item In doc.Items
      If (( fielditem.Type=NUMBERS )&(Strrightback(fielditem.Name, "P")))    Then
         var = doc.GetItemValue(fielditem.Name)
         Messagebox var, MB_OK, "Zwischenschritt"   
      End If
   End Forall
End Sub


Ich bearbeite den Wert noch nicht, sonder will in nur einmal in einer Messagebox ausgeben! zum testen!

Rufe ich den Agent nun auf, dann bekomm ich die Meldung "Object Variable not set"
???

ist im Code etwas falsch oder habe ich etwas vergessen!
ich hoffe ich habe das Problem einigermaßen beschrieben und ihr könnt ma da ein bisschen helfen!

mfg
Peter
In den Idealen Computer füttert man ein Problem hinein,
und es kommt NIE wieder heraus!!

Windows ist wie ein U-Boot! Öffne ein Fenster und die Probleme fangen an!
------------------------------------------------------------------------
Peter Goldsteiner
Notes Designer

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: forall item in doc.items
« Antwort #1 am: 02.05.07 - 09:49:25 »
1) Schon mal mit dem Debugger durchgesteppt, in welcher Zeile der Fehler auftritt?
2) Ein bissl Errorhandling würde auch nicht schaden.
3) DENKEN !!!!
Code
  Dim doc As NotesDocument
 ...
   Forall item In doc.Items
Wo weist Du denn doc einen Wert zu???????

HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: forall item in doc.items
« Antwort #2 am: 02.05.07 - 09:51:41 »
Meine Kristallkugel verrät auf den 1. Blick :
a) Doc nicht gesetzt
b) fielditem nicht gesetzt
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: forall item in doc.items
« Antwort #3 am: 02.05.07 - 09:56:19 »
doc-Objekt fehlt noch

Set uidoc = ws.CurrentDocument
set doc = uidoc.Document

   Forall item In doc.Items
      If (( fielditem.Type=NUMBERS )&(Strrightback(fielditem.Name, "P")))    Then

Du musst item anstelle von fielditem benutzen und ein & muss im Script AND sein.

  Forall item In doc.Items
      If item.Type=NUMBERS AND right(item.Name, 1) = "P" Then
« Letzte Änderung: 02.05.07 - 09:57:58 von diali »
Gruß
Dirk

Offline goldi003

  • Frischling
  • *
  • Beiträge: 18
  • Geschlecht: Männlich
  • In vino veritas
Re: forall item in doc.items
« Antwort #4 am: 02.05.07 - 10:04:21 »
Danke für die rasche Antort!

hab nun deinen Code nachgetragen, aber es kommt immernoch die selbe Meldung!!

Habe es durchdebugged und es hängt hier!!

Sub Initialize
   Dim s As New NotesSession
   Dim w As New NotesUIWorkspace
   Dim colSelect As NotesDocumentCollection
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim uidoc As NotesUIDocument
   Dim fielditem As NotesItem
   Dim var As Double
   
   Set db= s.CurrentDatabase
   Set uidoc = w.CurrentDocument
   Set doc = uidoc.Document

Da hängt der debugger mit objet variable not set   

                Forall item In doc.Items
      If item.Type=NUMBERS And Right(item.Name, 1) = "P" Then
         var = doc.GetItemValue(fielditem.Name)
         Messagebox var, MB_OK, "Zwischenschritt"
      End If
   End Forall
   
End Sub


In den Idealen Computer füttert man ein Problem hinein,
und es kommt NIE wieder heraus!!

Windows ist wie ein U-Boot! Öffne ein Fenster und die Probleme fangen an!
------------------------------------------------------------------------
Peter Goldsteiner
Notes Designer

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: forall item in doc.items
« Antwort #5 am: 02.05.07 - 10:06:25 »
was zeigt der Debugger im Objekt doc?
Kannst Du die Items im doc-Objekt sehen?
Gruß
Dirk

Offline goldi003

  • Frischling
  • *
  • Beiträge: 18
  • Geschlecht: Männlich
  • In vino veritas
Re: forall item in doc.items
« Antwort #6 am: 02.05.07 - 10:09:50 »
Hallo!

im object Doc steht nix drin!
Die Items sehe ich auch nicht!    :'(

muss ich vielleicht das Item auch irgendwo setzten?

mfg
Peter

In den Idealen Computer füttert man ein Problem hinein,
und es kommt NIE wieder heraus!!

Windows ist wie ein U-Boot! Öffne ein Fenster und die Probleme fangen an!
------------------------------------------------------------------------
Peter Goldsteiner
Notes Designer

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: forall item in doc.items
« Antwort #7 am: 02.05.07 - 10:11:08 »
Und woher soll dein "AGENT" denn wissen welches Dokument du meinst?
w.currentdocument liefert dir mit Sicherheit in deinem Kontext kein uidoc zurück.

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 goldi003

  • Frischling
  • *
  • Beiträge: 18
  • Geschlecht: Männlich
  • In vino veritas
Re: forall item in doc.items
« Antwort #8 am: 02.05.07 - 10:13:52 »
stimmt!!

in w.currentdocument steht nix drin!

wie mach ich das, dass ich die Selektierten Docs bearbeiten kann?
In den Idealen Computer füttert man ein Problem hinein,
und es kommt NIE wieder heraus!!

Windows ist wie ein U-Boot! Öffne ein Fenster und die Probleme fangen an!
------------------------------------------------------------------------
Peter Goldsteiner
Notes Designer

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: forall item in doc.items
« Antwort #9 am: 02.05.07 - 10:34:46 »
Damit bist du micht mehr im Frontend, also alles was mit UIDoc zu tun hat fällt schon mal flach.
Im Agent gibt es eine Eigenschaft auf was der abzielen soll.
Auslöser: Ereignis, Auswahl im Menü Aktionen, Ziel alle ausgewählten Dokumente.

Script Rumpf, ohne Anspruch auf Vollständigkeit und Fehlerfreiheit:
Code
doccollection = db.unprocesseddocuments
set doc = doccollection.getfirstdocument
do while not doc is nothing
set olddoc = doc
' mach deine überprüfung hier.

call doc.save(true,false)
set doc = doccollection.getnextdocument(olddoc)
loop
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 goldi003

  • Frischling
  • *
  • Beiträge: 18
  • Geschlecht: Männlich
  • In vino veritas
Re: forall item in doc.items
« Antwort #10 am: 02.05.07 - 10:58:17 »
Hey danke!
ich habs jetzt zwar anders gelöst! zum überprüfen ob der Agent funkt. habe ich einfach ein Dokument geöffnet und den Agent im Dokument ausgeführt! jetzt läuft er ohne fehler!

Einziges problem er findet kein Feld das auf meine Beschreibung zutrifft!!

manche Felder heißen --> num9BW und manche --> num9BP

jetzt brauche ich eine Abfrage die solche mit "P" am Schluss nicht bearbeitet!
Ist dieser Code korekt?
Wie mache ich im Lotus Script ein "ungleich"??

If item.Type=NUMBERS And Strrightback(item.Name, 1) = "P" Then

mfg
Peter
In den Idealen Computer füttert man ein Problem hinein,
und es kommt NIE wieder heraus!!

Windows ist wie ein U-Boot! Öffne ein Fenster und die Probleme fangen an!
------------------------------------------------------------------------
Peter Goldsteiner
Notes Designer

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: forall item in doc.items
« Antwort #11 am: 02.05.07 - 11:20:54 »
ungleich ... <>
Gruß
Dirk

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: forall item in doc.items
« Antwort #12 am: 02.05.07 - 12:17:44 »
Und du musst bei deinem Ansatz jedes Dokument einzeln öffnen ....
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 goldi003

  • Frischling
  • *
  • Beiträge: 18
  • Geschlecht: Männlich
  • In vino veritas
Re: forall item in doc.items
« Antwort #13 am: 02.05.07 - 13:07:32 »
Hallo! und Mahlzeit!

Nein jedes dokument muss ich nicht einzeln öffnen! Das habe ich nur jetzt zum Testen! Mach das ganze dann über Dokument Collection!  ::)

Es funktioniert ja auch schon alles, bis auf die Kleinigkeit, dass ich den Fehler Type Missmatch habe!

und zwar bei der Zeile wo ich mir die daten aus dem Feld holen will!
Dim var As Long
var = doc.GetItemValue(item.Name)


Diese Fehlermeldung heist ja das var nicht den selben Typ hat wie mein Feld, oder?

hat aber beides long! zumindest steht das im Debugger bei dem Feld!

mfg
Peter
In den Idealen Computer füttert man ein Problem hinein,
und es kommt NIE wieder heraus!!

Windows ist wie ein U-Boot! Öffne ein Fenster und die Probleme fangen an!
------------------------------------------------------------------------
Peter Goldsteiner
Notes Designer

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: forall item in doc.items
« Antwort #14 am: 02.05.07 - 13:14:02 »
Schau Dir BITTE die Hilfe zu GetItemValue an. Das liefert nämlich ein Array zurück !!!
« Letzte Änderung: 02.05.07 - 13:17:43 von m3 »
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Driri

  • Gast
Re: forall item in doc.items
« Antwort #15 am: 02.05.07 - 13:15:33 »
Hallo,

ich würde Dir dringend empfehlen, die Designer-Hilfe zu benutzen. Dort steht wunderbar beschrieben, was eine solche Methode tut und welchen Datentyp sie zurückliefert.

In Kurzform :

GetItemValue liefert einen Array zurück. Element x (vermutlich 0) aus dem Array hat dann bei Dir den Datentyp Long.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz