Autor Thema: Fehlermeldung bei ReplaceItemValue  (Gelesen 3053 mal)

Offline mgeidl

  • Aktives Mitglied
  • ***
  • Beiträge: 224
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Fehlermeldung bei ReplaceItemValue
« am: 21.02.11 - 10:59:16 »
Hallo!

Kann mir bitte jemand einen Tipp geben?
Ich hab eine Personalanforderungs-DB in der u.a. Auflösungen (Kündigungen) durch einen Workflow laufen. Dazu gibt´s Mitarbeiterdokumente, in denen alle MA-Daten drinnen sind, u.a., ob der MA aktiv oder inaktiv ist.
Sobald nun eine Auflösung genehmigt wird, wird der MA gesucht und das Kennzeichen (M_KZ) auf inaktiv gesetzt. Hab unten den code gepostet. In der Zeile, in der der Status ersetzt werden soll, bekomm ich die Fehlermeldung "Object variable not set". Bitte um Hilfe - Danke

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim doc As NotesDocument
   Dim currdoc As NotesUIDocument
   Dim collection As NotesDocumentCollection
   Dim db As NotesDatabase
   Dim maname As String
   Dim mailto As String
   
   Set currdoc= ws.CurrentDocument
   
   maname = currdoc.FieldGetText("MA_name")
   
   
   searchFormula$ = "select Form = 'Mitarbeiter' & M_Name = '"+maname+"' "
   Set db = session.CurrentDatabase
   Set collection = db.Search(searchFormula$, Nothing,0)
   Set doc = collection.GetFirstDocument
   
   Call doc.ReplaceItemValue("M_KZ","inaktiv" )
   Call doc.Save( True, False )
   
   Call currdoc.FieldSetText("Status","genehmigt")
   Call currdoc.FieldSetText("view_status","abgeschlossen")
   Call currdoc.FieldSetText("K_gen_am",Cstr(Today))
   Call currdoc.FieldSetText("K_gen_von",session.UserName)
   
   mailto=currdoc.FieldGetText("Mail_HR")
   Call sendmail(mailto,"Kündigungsantrag","Antrag wurde genehmigt! ", False)
   
   Call currdoc.Refresh
   Call currdoc.Save
   Call currdoc.Close
   
End Sub


LG
Marietta

klaussal

  • Gast
Re: Fehlermeldung bei ReplaceItemValue
« Antwort #1 am: 21.02.11 - 11:04:15 »
Zitat
Set doc = collection.GetFirstDocument
Ist überhaupt ein Dok in der Collection ?

Da fehlt grundsätzlich eine Fehlerbehandlung !!

Glombi

  • Gast
Re: Fehlermeldung bei ReplaceItemValue
« Antwort #2 am: 21.02.11 - 11:04:53 »
Die Searchformel ist falsch, daher ist die Collection leer und doc also Nothing.

Versuch mal folgende Formel:
searchFormula$ = |Form = "Mitarbeiter" & M_Name = "| +maname + |"|
...
 Set doc = collection.GetFirstDocument
if doc is nothing then
msgbox "Kein Dokument gefunden",0+16,"Abbruch"
exit sub
end if

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Fehlermeldung bei ReplaceItemValue
« Antwort #3 am: 21.02.11 - 11:06:00 »
Hallo,

Das Dein Script durch einen Button ausgeloest wiwrd ist klar.

Dennoch meine Frage.
Wo befindet sich der betreffende Button?
(wird er angeklickt, wenn ein Dokument geoeffnet ist, oder aus einer Ansicht heraus)


Andreas

Offline mgeidl

  • Aktives Mitglied
  • ***
  • Beiträge: 224
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Re: Fehlermeldung bei ReplaceItemValue
« Antwort #4 am: 21.02.11 - 11:20:16 »
danke mal an alle für die antworten.

Die Aktion wird aus einem geöffneten Dokument ausgeführt.

Normal sollte er ein Dokument finden, weil in der Maske oben über einen Button ein Mitarbeiter ausgewählt wird. Also liegt´s an der Search-Formel :-(
Hab die jetzt so eingetragen - und jetzt kommt die Fehlermeldung :-(

Mir ist nicht ganz klar, wofür die | stehen?

LG
Marietta

Offline mgeidl

  • Aktives Mitglied
  • ***
  • Beiträge: 224
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Re: Fehlermeldung bei ReplaceItemValue
« Antwort #5 am: 21.02.11 - 11:26:41 »
mist, jetzt hab ich gesehen, warum´s net funktioniert:

das feld MA_Name ist ein Feld mit Mehrfachwerten. Wenn ich jetzt eine Auflösung mit einem Mitarbeiter mach, dann funktionierts, wenn aber, wie in dem Fall, der jetzt grad das problem ausgelöst hat, dort 4 Mitarbeiter drinnen stehen (jeweils mit , getrennt), dann wohl nicht :-(

Kann ich das so überhaupt lösen?

LG
« Letzte Änderung: 21.02.11 - 11:39:16 von mgeidl »

Offline hupfi

  • Junior Mitglied
  • **
  • Beiträge: 73
Re: Fehlermeldung bei ReplaceItemValue
« Antwort #6 am: 21.02.11 - 12:05:23 »
mist, jetzt hab ich gesehen, warum´s net funktioniert:
wie in dem Fall, der jetzt grad das problem ausgelöst hat, dort 4 Mitarbeiter drinnen stehen (jeweils mit , getrennt), dann wohl nicht :-(

Hi,

möchtest du dann bei 4 Mitarbieter das Kennzeichen auf inaktiv setzen?

Du kannst das über eine DocumentCollection lösen, indem du bei allen
gefundenen Dokumenten das Feld mit Hilfe einer Schleife änderst.


Gruß

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Fehlermeldung bei ReplaceItemValue
« Antwort #7 am: 21.02.11 - 12:10:16 »
Zitat
Hi,

möchtest du dann bei 4 Mitarbieter das Kennzeichen auf inaktiv setzen?

Du kannst das über eine DocumentCollection lösen, indem du bei allen
gefundenen Dokumenten das Feld mit Hilfe einer Schleife änderst.

Also wenn es nur hierum geht, dann hilft auch ein NotesDocumentCollection.StampAll(...)


Andreas

Offline marschul

  • Senior Mitglied
  • ****
  • Beiträge: 280
  • Geschlecht: Männlich
Re: Fehlermeldung bei ReplaceItemValue
« Antwort #8 am: 21.02.11 - 12:19:23 »
Ich vermute, die entsprechenden MAs stehen im aktuellen Dokument (Feld MA_Name) und das Search fällt auf die Nase, weil da mehrere Werte mit Komma getrennt enthalten sind.

D.h. die searchFormula müsste angepasst werden:
Code
maname = Replace(currdoc.MA_Name, ",", |":"|)

Anschließend ist das mit dem StampAll eine gute Idee.

Gruß
Marco

Edit: Sorry, hab gerade gelesen, dass da Mehrfachwerte enthalten sind, also lautet es richtig
Code
maname = Join(currdoc.MA_Name, |":"|)
« Letzte Änderung: 21.02.11 - 12:21:20 von marschul »
Gruß
Marco

Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß. (Sokrates)
Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen. (unbekannt)

Offline mgeidl

  • Aktives Mitglied
  • ***
  • Beiträge: 224
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Re: Fehlermeldung bei ReplaceItemValue
« Antwort #9 am: 21.02.11 - 12:32:12 »
jetzt bin ich komplett verwirrt  ???

also wenn ich die searchFormula anpasse, wie Marco gemeint hat, kommt beim speichern vom script "MA_Name" not a MEMBER  ???

und wie bring ich das StampAll unter. hab in der Notes-Hilfe geschaut, aber nix gefunden?

LG

klaussal

  • Gast
Re: Fehlermeldung bei ReplaceItemValue
« Antwort #10 am: 21.02.11 - 12:36:27 »
Zitat
Beispiel
Replaces the value of a specified name in all documents in a collection.
Defined in
NotesDocumentCollection
Syntax
Call notesDocumentCollection.StampAll( itemname, value )
Parameters
itemname
String. The name of the item.
value
A value appropriate for the item type.
Usage
If the item does not exist, it is created.
The item values are immediately written to the back-end documents. You do not have to use the Save method of NotesDocument after StampAll. However, any documents modified by your script must be saved before calling StampAll.
This method does not modify existing NotesDocument objects. Documents must be retrieved again to see the changes.

Offline marschul

  • Senior Mitglied
  • ****
  • Beiträge: 280
  • Geschlecht: Männlich
Re: Fehlermeldung bei ReplaceItemValue
« Antwort #11 am: 21.02.11 - 13:11:13 »
Zitat
also wenn ich die searchFormula anpasse, wie Marco gemeint hat, kommt beim speichern vom script "MA_Name" not a MEMBER

Hmmm, das liegt wohl daran, dass es sich um das Frontend-Dokument handelt. Nehmen wir doch stattdessen das Backend-Dokument:
Code
maname = join(currdoc.document.MA_Name, |":"|)

Gruß
Marco
Gruß
Marco

Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß. (Sokrates)
Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen. (unbekannt)

Offline mgeidl

  • Aktives Mitglied
  • ***
  • Beiträge: 224
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Re: Fehlermeldung bei ReplaceItemValue
« Antwort #12 am: 21.02.11 - 13:26:22 »
DANKE AN ALLE

Klappt jetzt so wie sich´s gehört  ;D

LG
Marietta

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Re: Fehlermeldung bei ReplaceItemValue
« Antwort #13 am: 21.02.11 - 13:32:21 »
Diese Frage ging etwas unter:
Mir ist nicht ganz klar, wofür die | stehen?

Die Pipes | dienen der Übersichtlichkeit in der der Suchformel.
Es könnten auch { und } sein.
Z. B.:
Code
searchFormula$ = {Form = "Mitarbeiter" & M_Name = "} + maname + {"}

Schau in der Hilfe nach "Literal string construction rules".

Gruß Stefan
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

Offline mgeidl

  • Aktives Mitglied
  • ***
  • Beiträge: 224
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Re: Fehlermeldung bei ReplaceItemValue
« Antwort #14 am: 22.02.11 - 08:29:03 »
Danke Stefan, werd ich mir mal genauer durchlesen, sobald Zeit da is.

LG
Marietta

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz