Das Notes Forum
Domino 9 und frühere Versionen => Administration & Userprobleme => Thema gestartet von: Thomator am 14.01.03 - 09:10:24
-
Moin erst mal,
ich habe immer noch das Problem mit dem RT-Feld.
Wenn das Feld bearbeitbar ist, lässt es sich mit der Variablen gar nicht referenzieren. Wenn ich das Feld selbst auf Berechnet setze, kann ich es zwar referenzieren und auch Text anhängen usw., aber beim Speichern vergisst das Feld alles wieder. (Die angehängten Texte verschwinden einfach aus der Variablen) Ausserdem wirds dann nicht mehr angezeigt.
Hilfe!!!
Thomas
-
Hi,
kannst du mal den Code posten?
Axel
-
Hallo Axel,
also ich rufe mit der Aktion Neuer Eintrag folgendes auf:
Dim failureUpdate As Integer
Dim failureWrite As Integer
Dim s As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Set db = s.currentDatabase
Call ws.DialogBox("Erfassung", True, True, False,
True,False)
failureUpdate = UpdateRichText()
If failureUpdate = 0 Then failureWrite = WriteRichText()
Call uidoc.save
UpdateRichText schreibt die Ergebnisse aus dem Dialog in Variablen
und dann will ich das Ganze formatiert in das RichText-Feld Verlauf schreiben. Dazu soll WriteRichText() herhalten, das folgendermaßen ausschaut:
'***********Styles******************
Dim DateNameStyle As NotesRichTextStyle
Dim HeaderStyle As NotesRichTextStyle
Dim BetreffStyle As NotesRichTextStyle
Dim TextStyle As NotesRichTextStyle
Set DateNameStyle = session.createRichTextStyle()
DateNameStyle.Bold = True
DateNameStyle.NotesColor = COLOR_BLACK
DateNameStyle.Effects = EFFECTS_NONE
DateNameStyle.NotesFont = FONT_ROMAN
DateNameStyle.FontSize = 16
Set HeaderStyle = session.createRichTextStyle()
HeaderStyle.Bold = True
HeaderStyle.NotesColor = COLOR_BLACK
HeaderStyle.Effects = EFFECTS_SHADOW
HeaderStyle.NotesFont = FONT_ROMAN
HeaderStyle.FontSize = 18
HeaderStyle.Underline = True
Set BetreffStyle = session.CreateRichTextStyle()
BetreffStyle.Bold = False
BetreffStyle.NotesColor = COLOR_BLACK
BetreffStyle.Effects = EFFECTS_NONE
BetreffStyle.NotesFont = FONT_ROMAN
BetreffStyle.FontSize = 16
BetreffStyle.Underline = True
Set TextStyle = session.CreateRichTextStyle()
TextStyle.Bold = False
TextStyle.NotesColor = COLOR_BLACK
TextStyle.Effects = EFFECTS_NONE
TextStyle.NotesFont = FONT_COURIER
TextStyle.FontSize = 12
'**************************************************
Dim Body As NotesRichTextItem
Dim TempBody As NotesRichTextItem
UpdateRichText()
Set doc = uidoc.Document
Set Body = doc.GetFirstItem("Verlauf")
Set TempBody = doc.CreateRichTextItem("tmp")
Call TempBody.AppendStyle(HeaderStyle)
Call TempBody.AppendText("Datum:")
Call TempBody.AddTab(1)
Call TempBody.AppendStyle(DateNameStyle)
Call TempBody.AppendText(Datum)
Call TempBody.AddTab(2)
Call TempBody.AppendStyle(HeaderStyle)
Call TempBody.AppendText("Erfasst von:")
Call TempBody.AddTab(1)
Call TempBody.AppendStyle(DateNameStyle)
Call TempBody.AppendText(ErfName) 'usw.
Call Body.AppendRTItem(TempBody)
Body.isSummary = 1
Call doc.RemoveItem("Tmp")
Call doc.save(True, False, True)
Call uidoc.reload
Der ganze Spaß wird auch, wenn ich dem RichTextFeld die Eigenschaft 'Berechnet' mitgebe, in das RichTextFeld geschrieben, ist aber in der Ansicht des Dokuments nicht sichtbar. Wenn ich das Feld auf Bearbeitbar setze, sagt mir Notes, dass die Objektvariable für das Feld nicht gesetz wäre.
-
Hi,
sind WriteRichText und UpdateRichText eigene Funktionen? Stehen dort auch die Variablen uidoc, doc usw zur Verfügung?
Welche Objectvariable meckert den Notes an?
Axel
-
Moin,
also die Funktionen sind eigene, meckern tut er bei
Set Body = doc.GetFirstItem("Verlauf"), aber eben nur, wenn das RichTextFeld "Verlauf" auf bearbeitbar steht. Wenns 'berechnet' ist, funktioniert das ganze ja so weit super, aber es wird dann nicht mehr angezeigt, wenn ich das Doc zur Ansicht oder zum Bearbeiten öffne!
Grüsse...
-
... das der Text verschwindet liegt daran, daß das UIdoc zu einem späteren Zeitpunkt nochmals gespeichert wird, und zu dem Zeitpunkt weiß das UIDoc nichts von den Änderungen des RichText-Feldes - mit uidoc.Reload funzt das eben nicht.
... das Doc muß im Frontend nach dem Speichern geschlossen und wieder geöffnet werden, erst dann ist das RichText-Feld sauber übernommen...
Dim ws As New NotesUIWorkspace
Dim docThis As NotesDocument
Set docThis = ws.CurrentDocument.Document
' # ... dein Code mit der Bearbeitung des Rich-Text-Feldes...
Call docThis.Save(True , True)
Call uidoc.Close
Set uidoc = ws.EditDocument(True, docThis)
... damit funktioniert es bei mir...
ata
-
Hi,
schau die mal die Lösung von ata an.
Ausserdem prüfe auch mal ob alle Variablen uidoc,doc etc. in deinen Funktionen zur Verfügung stehen und mit den korrekten Werten initialisiert sind.
Axel
-
Hallöle,
also die Lösung von ata beseitigt schon mal 50% der Probleme.
Leider Funktioniert das Ganze nicht mit neuen Docs, weil Notes beim öffnen die Maske nicht kennt. Giebts dafür auch noch was nettes?
Thomas
-
Hi,
wie legst du denn das neue Dokument an?. Mit @Command([Compose]... sollte es keine Probleme geben.
Wenn du das mit Backend-Funktionen machst, dann mußt du ComputeWithForm aufrufen. Das sieht dann so aus:
...
Set db = session.CurrentDatabase
Set newdoc = New NotesDocument(db)
newdoc.Form = "Name der Maske"
Call newdoc.ComputeWithForm(True,False)
...
Axel
-
Hallo Leute,
also das hat mir alles schon sehr geholfen. Jetzt hab ich nur noch zwei winzige Probleme:
Was Axel geschrieben hat, funkt (mit dem Script). Allerdings hatte ich den Spaß mit @Command([Compose]... vorher, und damit gings nicht. Allerdings bleibt die Ansicht nach dem Erstellen des neuen Docs mit dem Script bestehen, soll heißen, ich muss das Doc erst über den Task-Button aktivieren. Kann man das automatisieren?
Die Lösung von ata funkt eigentlich auch einwandfrei. Wenn das Script ausgeführt wird, habe ich allerdings nachher noch 2 Docs offen. Bei einem Steht der Speicherabfragedialog im Vordergrund.
Der fragt also wahrscheinlich beim close wegen dem Speichern.
Kann ich das umgehen??
Thomas
-
Hi,
zu Lösung von ata
Versuchs mal so. Es könnte sein, dass sich uidoc auf ein anderes Dok bezieht.
...
Set docThis = ws.CurrentDocument.Document
' # ... dein Code mit der Bearbeitung des Rich-Text-Feldes...
Call docThis.Save(True , True)
Call ws.CurrentDocument.Close
Set uidoc = ws.EditDocument(True, docThis)
...
-
Hi,
das Problem mit dem aktiven Dokument hat sich nach einmal Schließen und wieder Öffnen von Notes irgendwie selbst zerstört!
Jetzt gehts auf einmal.
Das andere Problem 2. offenes Dokument und Speicherdialog) bleibt auch mit ws.CurrentDocument.close bestehen. Notes fragt immer noch, ob gespeichert werden soll. Dieser Dialog kann nicht irgendwie umgangen oder für das Dokument unter bestimmten Bedingungen abgeschaltet werden, oder?
Thomas
-
Hi,
du kannst den Speichern-Dialog nur mit dem Feld SaveOptions unterdrücken.
Versuch's mal so:
...
Set docThis = ws.CurrentDocument.Document
' # ... dein Code mit der Bearbeitung des Rich-Text-Feldes...
Call docThis.Save(True , True)
Set item = docThis.ReplaceItemValue( "SaveOptions", "0" )
Call ws.CurrentDocument.Close
Set uidoc = ws.EditDocument(True, docThis)
...
Axel
-
Hi,
mit dem Feld SaveOptins funktioniert das Ganze jetzt absolut astrein.
Alle, die mir hier so ausdauernd geholfen haben, klopfen sich jetzt bitte mal auf die Schulter!
Herzlichen Dank nochmal.
Thomas