Domino 9 und frühere Versionen > ND7: Entwicklung

Suchen & Ersetzen Agent in Notes Script - Tipps für Anfänger?

(1/5) > >>

watschn:
Hallo zusammen,

ich versuche eine Suchen & Ersetzen Funktion zu programmieren.
Dazu habe ich eine Maske mit den Feldern SSuchen und SErsetzen erstellt, die ich als Dialogbox aufrufe. In die Felder werden die Suchkriterien eingegeben, durch Klick auf einen Button wird dann ein Agent aufgerufen, der die Suchen & Ersetzen Funktion auf die aktuelle Ansicht anwenden soll. Soweit die Theorie  ;)

Ich bringe diesen Agenten leider nicht so wirklich zum laufen. Für das eigentliche Suchen & Ersetzen benutze ich @ReplaceSubstring. Jetzt muss ich eben die Werte meiner beiden Felder in diese Formel übernehmen. Da mir hierzu in der Formel Sprache kein Weg bekannt ist, will ich das Ganze mittels Evaluate in Notes Script umsetzen. Mein Code Ansatz ist folgender:

Sub Initialize
   
   Dim workspace As New NotesUIWorkspace
   Dim such As String
   Dim ersetz As String
   Dim varResult As Variant
   Set uidoc = workspace.CurrentDocument
   Set doc = uidoc.Document   
   Set uiview = workspace.Currentview
   
   
   Set collection = db.AllDocuments
   Set doc = collection.GetFirstDocument
   
   Such = doc.SSuchen
   Ersetz = doc.SErsetzen
   
   Const strFormula = |@ReplaceSubstring( VKenntnis; Such; Ersetz)|
   
   varResult = Evaluate(strFormula, uiview)
   uiview.VKenntnis = varResult
   
End Sub

Wenn ich versuche dies auszuführen, so erhalte ich die Fehlermeldung "Object does not contain an object". Da ich bei einer Dialogbox keinen Debugger nutzen kann und zugegebnermassen auch ein blutiger Anfänger in Sachen Notes Programmierung bin, komme ich jetzt gar nicht mehr weiter. Bei meinem Code fehlt´s warscheinlich an mehreren Stellen.

dirk_2909:

--- Zitat --- Const strFormula = |@ReplaceSubstring( VKenntnis; Such; Ersetz)|
   
   varResult = Evaluate(strFormula, uiview)
--- Ende Zitat ---

Das kann so nicjht gehen.
Oder gibt es in dem Dokument, dass Du gerade bearbeitest (  ;) ) die Felder "Such" und "Ersetz" ?

Und schau Dir Evaluate mal genau in der Designerhilfe an - die ist gut  8)

watschn:
Ich hab mir die Hilfe zu Evaluate zigfach angesehen, werde aber daraus nicht schlau. Momentan versuche ich es mit festen Werten

varRet=Evaluate (|@ReplaceSubstring( VKenntnis; "Michael"; "Hans")|)

Geht ebenfalls nicht. Würde es ja liebend gern mit Formel Sprache machen und mir das Evaluate sparen. Da hab ich aber das Problem wie ich die Variablen auslesen kann.

Zu den Feldern "Such" und "Ersetz"
Ich habe in meiner Maske die Felder SSuch und SErsetz. Im Script weise ich doch dann die Werte zu.
   Such = doc.SSuchen
   Ersetz = doc.SErsetzen

dirk_2909:
Aus der Hilfe:

--- Zitat ---Evaluate ( macro [ , object ] )
Elements
macro
A string expression specifying the text of a Lotus software application macro, in the syntax that the product recognizes. Refer to the Lotus software documentation for the correct syntax of the macro.
If the macro text is in a constant or string literal, the Lotus software application needs to do only initial processing of the macro once, at compile time, while variable strings incur that processing each time the macro is evaluated.
object
Optional. The name of a product object. Refer to the product documentation to determine if the macro requires an object, and what the object is.
--- Ende Zitat ---

Also, wenn Du Änderungen an einem Dokument machen möchtest, musst Du auch auf ein entsprechendes Objekte referenzieren.

Eine uiview ist bestimmt nicht das entsprechende korrekte Object.
Also:

Set doc = collection.GetFirstDocument
   
Such = doc.SSuchen
Ersetz = doc.SErsetzen
   
Const strFormula = |@ReplaceSubstring( VKenntnis; Such; Ersetz)|
   
varResult = Evaluate(strFormula, uiview)
Const C_strFormula = |@ReplaceSubstring( VKenntnis; SSuchen ; SErsetzen)|
varResult = Evaluate(c_strFormula, doc)
...


Driri:
Du kannst das auch mit Replace ohne die Formelsprache machen.

z.B. :

...
Dim var1 As Variant, var2 As Variant
...
var1 = doc.GetItemValue("Text")
var2 = Replace(var1, "A", "B")
...

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln