Lotus Notes / Domino Sonstiges > Projekt Bereich
Standard bei der Scriptprogrammierung
eknori (retired):
Hab ein paar ältere Artikel zur Standardisierung bei der Entwicklung von Notes Applikationen ausgegraben:
How to reduce your Notes application development time by 15%
http://www.dominopower.com/issuesprint/issue199811/reduce.html
How to use UI standards to cut your Notes development time by 15% or more
http://www.dominopower.com/issuesprint/issue199906/cutparttwo.html
eknori
Axel:
Hi Ulrich,
danke für die beiden Links. Die Artikel werde ich in den nächsten Tagen in die Datenbank aufnehmen. Ich hoffe auch, dass ich in absehbarer Zeit etwas mehr Gelegenheit habe die Datenbank zu füllen.
Axel
harkpabst_meliantrop:
Tja, nichts mehr los hier, was? Kleiner Hinweis auf ein weiteres Problem speziell bei den beliebten Script-Äquivalenten für @Formeln:
Um uns die Arbeit nicht zu erschweren anstatt sie zu erleichtern, muss man eigentlich zu vielen Sachen dazuschreiben, in welcher Notes-Version sie überhaupt sinnvoll sind. In R5 ist z.B. dank FullTrimm, StrLeft, etc. vieles gar nicht mehr erforderlich, was man für R4 zusammengebastelt hatte. Von R6 will ich noch gar nicht reden. Mir ist es zumindest noch nicht gelungen, einen Unterschied zwischen den @Formeln und den STR-Funktionen festzustellen.
Falls es trotzdem noch jemand braucht, kommen hier mal meine Versionen von @Left, @LeftBack, @Right, @RightBack und @Middle (@MiddleBack habe ich nicht hingekriegt :-[ ).
Mir gefallen sie besser, als das was schon in der DB steht, weil
1. grundsätzlich auch der Leerstring als Suchstring abgefragt und @Formel-konform bearbeitet wird.
2. die Back-Versionen statisch kürzer und dynamisch schneller sind
3. die bisherigen Back-Versionen manche Eingaben falsch verarbeiten :)
Function atLeft(Byval strToProcess As String, Byval strSub As String) As String
Dim lngPos As Long
atLeft = ""
If Not strSub = "" Then
lngPos = Instr(strToProcess, strSub)
If lngPos > 0 Then
atLeft = Left$(strToProcess, lngPos - 1)
End If
End If
End Function
Function atLeftBack(Byval strToProcess As String, Byval strSub As String) As String
Dim lngPosCur As Long
Dim lngPosNext As Long
atLeftBack = ""
If Not strSub = "" Then
lngPosCur = 0
Do
lngPosNext = lngPosCur + 1
lngPosCur = Instr(lngPosNext, strToProcess, strSub)
Loop While lngPosCur <> 0
If lngPosNext > 1 Then
atLeftBack = Left$(strToProcess, lngPosNext - 2)
End If
End If
End Function
Function atRight(Byval strToProcess As String, Byval strSub As String) As String
Dim lngPos As Long
atRight = ""
If Not strSub = "" Then
lngPos = Instr(strToProcess, strSub)
If lngPos > 0 Then
atRight = Right$(strToProcess, Len(strToProcess) - (lngPos - 1 + Len(strSub)))
End If
End If
End Function
Function atRightBack(Byval strToProcess As String, Byval strSub As String) As String
Dim lngPosCur As Long
Dim lngPosNext As Long
atRightBack = ""
If Not strSub = "" Then
lngPosCur = 0
Do
lngPosNext = lngPosCur + 1
lngPosCur = Instr(lngPosNext, strToProcess, strSub)
Loop While lngPosCur <> 0
If lngPosNext > 1 Then
atRightBack = Right$(strToProcess, Len(strToProcess) - (lngPosNext - 2 + Len(strSub)))
End If
End If
End Function
Function atMiddle(Byval strToProcess As String, Byval strSubStart As String, Byval strSubEnd As String) As String
atMiddle = atLeft(atRight(strToProcess, strSubStart), strSubEnd)
End Function
harkpabst_meliantrop:
Und wo ich schonmal beim Spammen bin:
@Abstract ist klasse, um den Inhalt bestehender Richtextfelder in Ansichten anzeigen zu können.
Nachteil: Es funktioniert nicht (zuverlässig) in Spaltenformeln
=> Also packt man ein Feld direkt ins Dokument.
Nachteil: RT-Felder werden erst nach dem Speichern Teil eines Dokuments, also funktioniert das ganze nur mit umständlichem Zwischenspeichern.
In R5 ist die beste Lösung meiner Meinung nach ein LotusScript im PostSave-Event der Maske. Wenn das RT-Feld "Body" und das Text-Feld "Abstract" heißen:
Sub Postsave(Source As Notesuidocument)
Dim rti As NotesRichTextItem
Set rti = Source.Document.GetFirstItem("Body")
Source.Document.Abstract = rti.Text
End Sub
Einziger mir bekannter Nachteil (außer der Untaublichkeit für R4): Die Hilfe dokumentiert nicht ausdrücklich, wieviel Text maximal zurückgegeben wird. Für die Anzeige in Ansichten sicher zu verschmerzen.
Rob Green:
ich weiß nicht, ob Du das vermisst mit "wieviel Text max. zurückgegeben wird":
abbreviation$ = notesItem.Abstract( maxAbstract&, dropVowels, useDictionary )
mit maxAbstract kannst Du zB 80 Byte Text zurückgeben.
damit ist eine Steuerung der Rückgabelänge möglich und das echte Maximum wird entweder 64KByte sein oder aber 15K, weil der Rückgabewert ein String ist. Aber das kann man ja testen.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln