Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: sja am 28.04.11 - 11:17:24
-
Hallo @All,
folgendes Szenario:
es gibt in einem Dokument zwei RT Felde, ein davon ist bearbeitbar FeldA, zweite FeldB berechnet.
Per einen Button soll den ganzen Inhalt aus dem FeldA in das FeldB angehängt werden und danach soll das FeldA geleert werden.
Mit folgendem Code funktioniert das auch
Sub Click(Source As Button)
Dim ws As NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim rtitemA As Variant
Dim rtitemB As Variant
Dim s As NotesSession
Set s = New NotesSession
Dim user As String
user = s.UserName
Dim cName As String
cName = s.CommonUserName
tmpDatum= Format(Now, "Short Date")
tmpZeit = Format(Now, "Short Time")
tmpDatumZeit = tmpDatum & " " & tmpZeit
Dim DatumName As String
DatumName = tmpDatumZeit & " " & cName
Set ws = New NotesUIWorkspace
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
Set rtitemA = doc.GetFirstItem( "Anhaenge" )
Set rtitemB = doc.GetFirstItem( "Anhaenge_View" )
Call uidoc.Save
If ( rtitemA.Type = RICHTEXT And rtitemB.Type = RICHTEXT ) Then
Call rtitemB.AppendText(DatumName)
Call rtitemB.AddNewline(1)
Call rtitemB.AppendRTItem( rtitemA )
Call rtitemB.AddNewline(2)
Call doc.ReplaceItemValue("Anhaenge", "")
Call doc.save(False,False)
uidoc.document.SaveOptions ="0" 'keine Speicherabfrage
Call uidoc.Close
'Call ws.EditDocument(True, doc)
'doc.SaveOptions = "1"
End If
End Sub
Aber, nur wenn man zweite Mal auf den Button klickt. Beim ersten klick bekommt man die folgende Lotus Notes Mitteilung:
Falscher Datentyp in Methode RunStkCoerceVal...
und wenn man klickt OK und zweite mal auf den Button, dann wird den Code erfolgreich ausgeführt.
Wenn der Code per Debugger ausgeführt wird, kommt erst die Mitteilung "Type mismatch" bei der Zeile
Call rtitemB.AppendRTItem( rtitemA )
Nach dem Klick OK, Debugger stoppen und neun Start wird der Code erfolgreich ausgeführt.
Vielen Dank im Voraus für jede Hilfe
Grüße
Sofia
-
Vermutlich fehlt beim ersten Klicken wenigstens eines der Richtextfelder. Probier mal, ob der Fehler weg ist, wenn das Dokument vorher gespeichert, geschlossen und wieder geöffnet wurde
-
Hallo Peter,
danke für Deine Antwort.
Eigentlich passierte es nicht nur in einem neuen Dokument, sondern in den Dokumenten, die schon mehrere Mal geöffnet die RT Felder gearbeitet und gespeichert sind. ???
-
Tja, komisch. Ich würde das uidoc.Save vor dem Setzen der RT-Felder ausführen, vielleicht hilft's?
-
danke schön!
habe
Call uidoc.Save
vor
Set rtitemA = doc.GetFirstItem( "Anhaenge" )
Set rtitemB = doc.GetFirstItem( "Anhaenge_View" )
gesetzt und jetzt funktioniert ohne Problem
noch mal vielen dank! :)
Sofia
-
Hallo Sofia,
der Code ist gut!
Ich würde diesen gerne verwenden um z.B. eine Art Protokoll in einer DB mitzuschreiben.
Verschiedene User geben über Feld A Ihr Statement ab ..dies wird bei Speichern in Feld B nacheinander berechnet übertragen und Feld A wieder gelöscht! . Inkl. Dateianhänge etc. ... super Sache!
Ich wollte eben noch eine Zusatz einbauen, dass jeder User auch seine "eigene Farbe" bekommt. Das funktioniert zwar für die berechneten Daten (Datum/Name) .. aber nicht für das Feld A!
Hier wird das Format 1zu1 übertragen ??
Oder - Trick 17 ...?
Danke
snore