Domino 9 und frühere Versionen > ND7: Entwicklung
Suchen & Ersetzen Agent in Notes Script - Tipps für Anfänger?
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