Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: tuelb am 28.02.03 - 18:35:02

Titel: Hilfe bei Lotus Script
Beitrag 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

 ???
Titel: Re:Hilfe bei Lotus Script
Beitrag von: Rob Green am 28.02.03 - 18:52:53
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
Titel: Re:Hilfe bei Lotus Script
Beitrag von: ata am 01.03.03 - 16:47:23
@Rob
Zitat
' 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
Titel: Re:Hilfe bei Lotus Script
Beitrag von: Rob Green am 01.03.03 - 17:44:46
ok, Maestro, damit wir korrekt bleiben
 :)
Titel: Re:Hilfe bei Lotus Script
Beitrag von: tuelb am 03.03.03 - 10:28:03
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???
Titel: Re:Hilfe bei Lotus Script
Beitrag von: Performance am 03.03.03 - 10:59:38
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
Titel: Re:Hilfe bei Lotus Script
Beitrag von: tuelb am 03.03.03 - 11:39:13
 :) 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? ???
Titel: Re:Hilfe bei Lotus Script
Beitrag von: tuelb am 03.03.03 - 15:36:28
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 ???
Titel: Re:Hilfe bei Lotus Script
Beitrag von: Rob Green am 03.03.03 - 15:42:10
   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)
  ....
Titel: Re:Hilfe bei Lotus Script
Beitrag von: tuelb am 03.03.03 - 16:03:57
  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
Titel: Re:Hilfe bei Lotus Script
Beitrag von: Performance am 03.03.03 - 16:30:03
@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
Titel: Re:Hilfe bei Lotus Script
Beitrag von: tuelb am 03.03.03 - 16:34:21
@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.....
Titel: Re:Hilfe bei Lotus Script
Beitrag von: Performance am 03.03.03 - 16:40:21
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
Titel: Re:Hilfe bei Lotus Script
Beitrag von: tuelb am 03.03.03 - 16:45:40
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????
Titel: Re:Hilfe bei Lotus Script
Beitrag von: Performance am 03.03.03 - 16:54:22
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


Titel: Re:Hilfe bei Lotus Script
Beitrag von: tuelb am 03.03.03 - 17:02:07
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!
Titel: Re:Hilfe bei Lotus Script
Beitrag von: Performance am 03.03.03 - 17:27:43
- 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
Titel: Re:Hilfe bei Lotus Script
Beitrag von: tuelb am 03.03.03 - 17:39:20
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
Titel: Re:Hilfe bei Lotus Script
Beitrag von: Performance am 03.03.03 - 17:43:43
dann mach dein Feld "on_offline"  berechnet  mit  on_offline als Formel.


Summary ist wenn dieses Feld in einer View gezeigt werden soll



cu
Titel: Re:Hilfe bei Lotus Script
Beitrag von: tuelb am 03.03.03 - 18:52:28
Geile Sache!!

Danke,Danke, Danke an Euch!!!
 ;D

Sorry bin aber 'ne totale Notes Niete. Ich wurde dazu gezwungen  ;)
Titel: Re:Hilfe bei Lotus Script
Beitrag von: ata am 03.03.03 - 22:31:39
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