Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: tuelb am 28.02.03 - 18:35:02
-
Will eine messagebox mit dem inhalt eines Textfeldes(test) der aufgerufenen Maske machen.
Wie geht das?
Sub Initialize
Dim wert As String
wert = test <--???
Msgbox wert
End Sub
???
-
aus der Help von Notes, nur etwas abgewandelt (KLasse NOTESUIDOCUMENT..gibt natürlich noch viele andere Wege)
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim composed As String
Set uidoc = workspace.CurrentDocument
composed = uidoc.FieldGetText( "DateComposed" )
msgbox composed
Oder über die Backendklasse
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim composed As String
Dim doc as NotesDocument
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
msgbox Cstr(doc.FELDABC(0) )
' die 0 steht für den ersten Wert des Feldes, falls es ein Multivalue ist
-
@Rob
' die 0 steht für den ersten Wert des Feldes, falls es ein Multivalue ist
... das ist inhaltlich nicht ganz richtig. Über das Backend sind Nicht-MultipleValue-Felder ebenfalls ein Array, aber eben nur mit einem Element mit dem Index (0)...
... nur um keine falschen Schlüsse zuzulassen...
ata
-
ok, Maestro, damit wir korrekt bleiben
:)
-
Mmh.habe das in den globalen Teil der Maske/Initialize eingetragen:
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim composed As String
Set uidoc = workspace.CurrentDocument
->hier wird gemeckert ???
composed = uidoc.FieldGetText( "ipaddr1" ) 'mein Textfeld ipaddr1
Msgbox composed
Fehlermeldung "Objektvariable not set!" ???
Das andere habe ich auch ausprobiert, gleiche Fehlermeldung???
-
warum trägst du den code in initialize ein ?
du hast beim Aufruf noch kein gültig initialisiertes UI Dokument.
versuchs mal im Postopen
cu
-
:) Super das war ja einfach.
Wenn ich jetzt ein Feld schreiben will, muss man lt. Fehlermeldung im Bearbeitungsmodus sein.
Wie wechsle ich denn kurzzeitig in den Bearbeitungsmodus und dann wieder in den Anzeigemodus per Skript????
Benutze dieses Statement zum schreiben:
Call uidoc.FieldSetText ( "Feld", "text")
Oder gibt es eine andere Lösung? ???
-
Bin jetzt von der Frontend Lösung auf die Backendlösung umgestiegen.
Wie beschreibt man denn ein bestehendes Feld im Backend?
Irgendwie mit der Klasse Item/Notesitem oder ???
-
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
dim doc as Notesdocument 'Backend
Dim composed As String
Set uidoc = workspace.CurrentDocument
Set doc=uidoc
Set doc = uidoc.Document ' !!! hier kommt man vom UI ins koplementäre Backenddoc
doc.Feld = uidoc.FieldGetText( "ipaddr1" ) ' schreiben in ein Feld per Backendmethodik
call doc.save(false, false)
....
-
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
dim doc as Notesdocument 'Backend
Dim composed As String
Set uidoc = workspace.CurrentDocument
Set doc=uidoc
Set doc = uidoc.Document ' !!! hier kommt man vom UI ins koplementäre Backenddoc
doc.Feld = uidoc.FieldGetText( "ipaddr1" ) ' schreiben in ein Feld per Backendmethodik
call doc.save(false, false)
....
Set doc=uidoc ->gibt einen Fehler aus, also wird im Designer nicht gespeichert
Das habe ich so modifiziert
doc.on_offline = uidoc.FieldGetText( "ONLINE" )
mein Feld heißt on_offline und es soll "Online" reingeschrieben werden.
Lotus kann aber das Feld nicht finden, liegt wahrscheinlich am ersten Fehler??????
Noch kleinen Tip???
Danke, Danke
-
@tuelb
verstehe dein Problem nicht ganz...
was willst du eigentlich erreichen ?
ein Feld im backend mit einem Feld aus dem Frontend überscheriben ?
wo baust du deinen code ein ?
cu
-
@performance
im postopen bereich,
führe eine Funktion ping aus und je nach Rückgabewert soll in das feld on_offline der wert "online" oder offline" geschrieben werden. Oder geht das gar nicht?
Also im Frontend hat es geklappt aber das sah so blöd aus, da man sehen konnte, wie sich die Ansicht auf "bearbeiten" änderte,
dann der Feldwert eingetragen wurde und wieder auf Ansicht gewechselt wurde. Dachte, dass kann man im Hintergrund laufen lassen.....
-
das geht schon - nur wann machst du den Ping ? auch im Postopen ?
warum willst du dann
"" doc.on_offline = uidoc.FieldGetText( "ONLINE" ) ""
machen ?
wenn im Feld online das ganze schon gespeichert ist, warum soll es dann nach on_offline geschrieben werden ?
cu
-
Vielleicht habe ich da die Syntax falsch verstanden:
doc.Feld = uidoc.FieldGetText( "ipaddr1" )
Ich dachte doc.FELD-> da muss ich meinen Feldnamen ersetzen also doc.on_offline
und
uidoc.FieldGetText( "ONLINE" ) und da, dachte ich, kommt der Wert rein, den ich dort eintragen will
Sub Postopen(Source As Notesuidocument)
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim item As NotesItem
Dim IP As String
Dim Ping As New Ping
Set uidoc = workspace.CurrentDocument
' Set doc=uidoc 'funktioniert nicht
Set doc = uidoc.Document
doc.on_offline = uidoc.FieldGetText( "ONLINE" )
Msgbox 1
IP = Cstr(doc.ipaddr1(0))
If (Ping.Ping ( IP )=True) Then doc.on_offline = uidoc.FieldGetText( "ONLINE" ) Else doc.on_offline = uidoc.FieldGetText( "OFFLINE" )
Call doc.save(True,False)
End Sub
Wie definiere ich denn den Wert, der in das Feld soll????
-
im uidoc kannst du die Felder im edit mode setzen
uidoc.editmode = true
If (Ping.Ping ( IP )=True) Then
uidoc.FieldSetText("on_offline","ONLINE" )
Else
uidoc.FieldSetText("on_offline","OFFLINE" )
end if
uidoc.refresh
- oder ein save machen
uidoc.save
cu
-
aber dann sieht der Benutzer das (den wechsel von Bearbeitungsmodus in Anzeigemodus und zurück)doch,oder?
Ich wollte, dass er das im Hintergrund macht!
-
- im Hintergrund ? ok dann musst du wieder ins Queropen und mit items ds ganze machen:
Dim item As NotesItem
Set doc = Source.Document
If (Ping.Ping ( IP )=True) Then
Set item = doc.ReplaceItemValue("on_offline","ONLINE" )
item.Issummary = True
Else
Set item = doc.ReplaceItemValue("on_offline","OFFLINE" )
item.Issummary = True
end if
cu
-
das scheint zu funktionieren.
Aber ich muss das Dokument immer nochmal laden, bis der Eintrag dargestellt wird. So ein Refresh, wie oben beschrieben funtkioniert nicht. Wie macht man das??
Und wozu (Verständis) ist item.Issummary = True?
Danke
-
dann mach dein Feld "on_offline" berechnet mit on_offline als Formel.
Summary ist wenn dieses Feld in einer View gezeigt werden soll
cu
-
Geile Sache!!
Danke,Danke, Danke an Euch!!!
;D
Sorry bin aber 'ne totale Notes Niete. Ich wurde dazu gezwungen ;)
-
Hallo tuelb,
... die Grundlagen zu LotusScript habe ich in meiner Homepage der Öffentlichkeit zur Verfügung gestellt - da sind solche Grundsätzlichen Aufgabenstellungen drin...
... möge es dir nutzen...
http://www.anton-tauscher.de/LotusScript (http://www.anton-tauscher.de/LotusScript)
ata