Lotus Notes / Domino Sonstiges > Projekt Bereich
@Formula-Befehle in Lotus Script abbilden
TMC:
Zwischenstand:
Wir starten gerade offtopic per PM, erste Scriptvorschläge zu diskutieren.
Wer sich beteiligen möchte an der Diskussion und am "formen" der ersten Functions, bitte kurze PM an mich.
Die ersten Ergebnisse werde ich dann hier posten als Motivation, unsere Library nach und nach zu füllen ;)
Grüße,
TMC
TMC:
********* Projektinfo *********
Hab grad gesehen, dass Axel gerade ein Projekt startet für die Abbildung der Scripts :D
http://www.atnotes.de/index.php?board=24;action=display;threadid=12702
TMC
TMC:
Hi,
ein Versuch war es mal, Scripts offline zu disktutieren, nur leider verliert man da im PM leicht den Überblick und Zusammenhang.
Daher tendiere ich doch dazu, die Diskussion online weiterzuführen.
Wir haben in Summe jetzt 5 Scripts zur Diskussion.
Mit dem ersten starte ich mal, es ist von Bernhard (koehlerbv) und ein ReplaceSubstring-Derivat:
ACHTUNG ENTWURF - NUR ZUM TESTEN VERWENDEN
--- Code: ---Function ReplaceSubstring (vSource As Variant, vFrom As Variant, vTo As Variant) As Variant
'===========================================================================================
' Purpose: Replaces a specific substring in a string or array of strings with a new substring
' The parameters MUST be strings or array of strings !
'--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
' Arguments Type Description
' vOriginal | I/- | the source string or string array
' vForm | I/- | the substring (or string array) to replace
' szTo | I/- | the substring (or string array) to insert
'--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
' Returns: String array with replaced values
' NOTE: There is a difference between @ReplaceSubstring and this function !
' If vFrom has more elements as vTo, we replace only the amount of elements in vTo !!!
'--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
' Created by: Bernhard Koehler on 08.07.2003 Modified by: on
'===========================================================================================
Dim aSource As Variant
Dim aFrom As Variant
Dim aTo As Variant
Dim szSource As String
Dim vResult As Variant
Dim iLoop As Integer
Dim iElementsToChange As Integer
Dim iFirstStringPos As Integer
Dim szTo As String
On Error Goto ErrorRoutine
'The default value: Source = Result
ReplaceSubstring = vSource
'Make sure that all parameters becomes arrays (We have to decide two cases: vSource is String, or any kind of a variant)
If Datatype (vSource) = V_STRING Then
Redim aSource (0) As String
aSource (0) = vSource
Else
aSource = vSource
End If
If Datatype (vFrom) = V_STRING Then
'No calculations with an empty FromList:
If vFrom = "" Then Exit Function
Redim aFrom (0) As String
aFrom (0) = vFrom
Else
aFrom = vFrom
End If
If Datatype (vTo) = V_STRING Then
Redim aTo (0) As String
aTo (0) = vTo
Else
aTo = vTo
End If
'Make the replaces:
szSource = Implode (aSource, Chr$ (255)) 'make a string from the source parameter
'Determine the limit of changes:
If Ubound (aFrom) > Ubound (aTo) Then
iElementsToChange = Ubound (aTo)
Else
iElementsToChange = Ubound (aFrom)
End If
For iLoop = 0 To iElementsToChange
While Instr (szSource, aFrom (iLoop)) > 0
iFirstStringPos = Instr (szSource, aFrom (iLoop))
If iFirstStringPos = 1 Then
szSource = aTo (iLoop) & Mid$ (szSource, iFirstStringPos + Len (aFrom (iLoop)) - 0, 255)
Else
'szSource = Mid$ (szSource, 1, iFirstStringPos - 1) & aTo (iLoop) & Mid$ (szSource, 1 + iFirstStringPos + Len (aFrom (iLoop)))
szSource = Mid$ (szSource, 1, iFirstStringPos - 1) & aTo (iLoop) & Mid$ (szSource, iFirstStringPos + Len (aFrom (iLoop)), 255)
End If
Wend
Next
ReplaceSubstring = Explode (szSource, Chr$ (255))
Exit Function
ErrorRoutine:
Call DisplayErrMsg ("ReplaceSubstring")
End Function
--- Ende Code ---
TMC:
OK und hier mein Feedback zum ReplaceSubstring-Derivat:
Ich poste mal direkt ohne Rücksicht auf Höflichkeitsfloskeln (bla bla leider könnte da u.U. vielleicht evtl. ein Fehler sein bla bla...)
- Code-Header: Code-Header "Arguments" stimmt nicht überein mit tatsächlichen Bezeichnungen (vOriginal / vSource , etc.)
- Wenn ich Option Declare setze, bringt der Designer eine Fehlermeldung, dass " V_STRING" nicht deklariert ist.
Testszenario:
R5011 Client, Maske in Bearbeitung, die Textfelder
- Inhalt (dieses Feld soll durchsucht werden)
- Vorgabe_Ist (Wert nach dem gesucht werden soll - also der replaced werden soll)
- Vorgabe_Soll (Wert, der eingefügt werden soll)
Aufruf des Scripts: über Button
Script:
--- Code: ---Sub Click(Source As Button)
Dim uiws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
'die 3 Felder
Dim szInhalt As String
Dim szIst As String
Dim szSoll As String
Set db = session.CurrentDatabase
Set uidoc = uiws.CurrentDocument
Set doc = uidoc.Document
'Feldinhalte holen...
szInhalt = doc.Inhalt(0)
szIst = doc.Vorgabe_Ist(0)
szSoll = doc.Vorgabe_Soll(0)
'Function ausführen
doc.Inhalt = ReplaceSubstring(szInhalt, szIst, szSoll)
'Speichere Doc
Call doc.save(False, False)
End Sub
--- Ende Code ---
Im Textfeld "Inhalt" steht der Text "Rainer askhfdkjad hkjahdkjas dk"
Im Textfeld "Vorgabe_Ist" steht "Rainer"
Im Textfeld "Vorgabe_Soll" steht "Hans"
Dokument wurde bereits gespeichert und neu im Bearbeitungsmodus geöffnet.
Aufruf
Beim Klick auf den Codebutton
- durchläuft der Debugger sauber die Sub, geht dann normal in die Function, durchläuft die Function
- An der Stelle "If Ubound (aFrom) > Ubound (aTo) Then" springt er danach zum Errorhandler, dann Fehlermeldung "No RESUME"
TMC
Semeaphoros:
Das sieht mir so aus, wie wenn da beim Uebermitteln der Funktion etwas verloren gegangen ist, müsste mal Bernhard zuerst den Code überprüfen und sagen, was Sache ist, natürlich liesse sich das auch so ausmerzen, aber Bernhard soll mal dazu was sagen.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln