Autor Thema: Lotus Script Problem!  (Gelesen 2255 mal)

Offline mh70220

  • Aktives Mitglied
  • ***
  • Beiträge: 125
  • Geschlecht: Männlich
    • Meine HP
Lotus Script Problem!
« am: 24.07.06 - 10:14:22 »
Hallo zusammen,

ich habe mir ein Script geschrieben, welches alle Dokument aus meiner DB suchen soll, die einer Abteilung angehören und dann soll es bei allen Dokumenten ein Feld ändern. wenn ich es ausführe, dann bekomme ich immer die Fehlermeldung: Object variable not set.

Kann mal jemand drüber schauen und vielleicht den Fehler finden.

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim uidoc As NotesUIDocument
   Dim Teileinheit As String
   Dim Vorgesetzter As String
   
   Teileinheit = uidoc.FieldGetText("TEListe")
   Vorgesetzter = uidoc.FieldGetText("NeuerVorgesetzter")
   searchFormula$ = {Form = "PersView" & "PTeileinheit" = Teileinheit}
   
   Set db = session.CurrentDatabase
   Set collection = db.Search(searchFormula$, Nothing,0)
   Set doc = collection.GetFirstDocument()
   
   While Not(doc Is Nothing)
      Call doc.ReplaceItemValue("PVorgesetzter", Vorgesetzter)
      Call doc.Save( True, False )
      Set doc = collection.GetNextDocument(doc)
   Wend
   
End Sub

PTeileinheit ist das Feld in den Dokumenten welches gleich der Variable Teileinheit sein soll.

Matthias
Notes 5.05
Server 5.05
Windows 2000

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Lotus Script Problem!
« Antwort #1 am: 24.07.06 - 10:20:35 »
Ein Errorhandle wäre nicht schlecht, dann bekommst Du die Info wo es nicht klappt.

André
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

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: Lotus Script Problem!
« Antwort #2 am: 24.07.06 - 10:21:33 »
Warscheinlich bekommst du keine Collection bzw. eine Collection mit Count = 0 zurück. weil deine SearchFormula nicht stimmt. Die müsste vermutlich so lauten:
searchFormula$ = {Form = "PersView" & Pteileinheit = "} & teileinheit & {"}
Weil so wie du das geschrieben hast baut er nämlich ziemlichen Unsinn zusammen.

Aber wie wäre es wenn du einfach mal den Debugger einschaltest und dann etwas genauer hinschaust an welcher Stelle das hakt.
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 Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: Lotus Script Problem!
« Antwort #3 am: 24.07.06 - 10:22:06 »
Hmm... ich sehe da keinen Fehler.

In welcher Zeile tritt die Meldung denn auf? Könnte es sein, dass er keine Dokumente findet und die Collection leer ist?

Tipp: Im Eigenschaftsfenster vom "Programmer's Pane" aktiviere das Häkchen "Automatically add <<Option Declare>>". Und füge diese Anweisung in diesem Script auch noch ein.

Dann musst du anschliessend "searchFormula" korrekt deklarieren und der Compiler macht dich auf vergessene Deklarationen aufmerksam.

Grüsse
Moritz

EDIT: In diesem Forum werden eindeutig zu viele Antworten zu schnell gegeben  ;D

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: Lotus Script Problem!
« Antwort #4 am: 24.07.06 - 10:22:25 »
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

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: Lotus Script Problem!
« Antwort #5 am: 24.07.06 - 10:31:37 »
Der arme Matthias  8)

Reactmin = 6 Min
Reactrange = 2 Min
Reactcount = 4 Ans
Reactqual = 1

Problsolved = ((Reactmin + Reactrange) / Reactcount) * Reactqual

Und das Ergebnis ist dann ein Haufen zu lesen und zu verarbeiten, damit er es in Zukunft besser machen kann. Nicht schlecht meine Herren.
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 Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Lotus Script Problem!
« Antwort #6 am: 24.07.06 - 10:40:18 »
Du hast nirgends die Variable uidoc initialisiert.
Erweitere mal deinen Code um die fettgedruckten Zeilen.

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim workspace As New NotesUIWorkspace
   Dim db As NotesDatabase
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim uidoc As NotesUIDocument
   Dim Teileinheit As String
   Dim Vorgesetzter As String
   
   Set uidoc = workspace.CurrentDocument
   Teileinheit = uidoc.FieldGetText("TEListe")
   Vorgesetzter = uidoc.FieldGetText("NeuerVorgesetzter")
   searchFormula$ = {Form = "PersView" & "PTeileinheit" = Teileinheit}
   ....

Das hättest du aber auch mit dem Debugger finden können.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

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: Lotus Script Problem!
« Antwort #7 am: 24.07.06 - 10:56:28 »
Mist hab ich übersehen  >:(

Dann sind da zwei Fehler drin.
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 mh70220

  • Aktives Mitglied
  • ***
  • Beiträge: 125
  • Geschlecht: Männlich
    • Meine HP
Re: Lotus Script Problem!
« Antwort #8 am: 24.07.06 - 12:44:01 »
@alex

Ja, den fehler hab ich dann auch gefunden, nachdem ich das ganze in einem normalen Dokument ausgeführt habe und nicht als Popup window, denn da reagiert der Debugger nicht.

Nun habe ich das Problem, das im Bereich "searchFormula$" nicht wirklich was brauchbares rauskommt. Hab das ganze dann umgeschrieben, das er erst mall alle dokumente nimmt und dann ging das da auch.

Jetzt habe ich nur noch ein Problem.

Wie kann ich eine Variable typ String und eine Variable Typ Variant mit einander vergleichen. Ich weis, das das direkt nicht geht, denn er sagt mir ja auch immer "Typ Mismatch".
Das Problem ist aber das er für das Auslesen von Feldinhalten mit GetItemValue ein Variant Typ will. Da setzt Notes dann zwei Eckige Klammern z.B. ["Wert"] um den Inhalt des Feldes.
Selbst wenn ich die eine Variable auch auf Variant setze, bring er mir immer noch ein Typ Mismatch.

Der Debugger zeit für die erste Variable den Inhalt so an: "Wert"
und für die zweite Variable so: ["Wert"]

Hab schon alles probiert  ???

Matthias
Notes 5.05
Server 5.05
Windows 2000

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: Lotus Script Problem!
« Antwort #9 am: 24.07.06 - 12:49:56 »
Du bekommst mit GetItemValue immer ein Array zurück. Also müsstest Du z.B. so die Werte vergleichen

testString = "123"
if testString = doc.GetItemValue("Name")(0) Then
...
Gruß
Dirk

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Lotus Script Problem!
« Antwort #10 am: 24.07.06 - 12:52:37 »
Das geht z.B. so (Vorraussetzung ist natürlich, dass das Feld vom Typ Text ist):

Dim varTemp As Variant
Dim strTest As String

varTemp = doc.GetItemValue("Feldname")
If strTest = varTemp(0) Then
...

oder einfacher auch

...
If strTest = doc.Feldname(0)
...



Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline mh70220

  • Aktives Mitglied
  • ***
  • Beiträge: 125
  • Geschlecht: Männlich
    • Meine HP
Re: Lotus Script Problem!
« Antwort #11 am: 24.07.06 - 12:58:47 »
OK, ihr seid einfach super  ;D

Jetzt läuft mein Script durch.
Notes 5.05
Server 5.05
Windows 2000

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz