Lotus Notes / Domino Sonstiges > Projekt Bereich

Standard bei der Scriptprogrammierung

<< < (17/21) > >>

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