Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Karotte am 02.04.03 - 09:26:31
-
Besteht die Möglichkeit über die Formelsprache die IP-Adresse eines Rechners auszulesen ?
Konkret soll das so aussehen Nutzer öffnet Datenbank (liegt auf Server) bei sich aufn Client und macht in der DB nen Eintrag ich hätte dann gern das im Eintrag seine IP-Adresse steht
Oder kann man wenn überhaupt sowas nur per script lösen ?
Auch da wär ich über (allerdings dann dokumentierten) Code dankbar.
-
Also IP per Script:
http://www.eknori.de/downloads.htm (Lotus Script Klasse "Systeminformationen")
IP per Formel:könnte über @RegQueryValue(Schlüsselname; Unterschlüsselname; Wertname) gehen; allerdings wüßte ich jetzt nicht auf Anhieb, wo der Wert in der Registry steht.
Java
http://www-10.lotus.com/ldd/46dom.nsf/55c38d716d632d9b8525689b005ba1c0/5f306a0ba8931a0a85256ac7004fd53c?OpenDocument
und im Web geht das dann über CGI Variablen
http://www-10.lotus.com/ldd/46dom.nsf/55c38d716d632d9b8525689b005ba1c0/079d12920bb768578525692100529bf0?OpenDocument
eknori
-
Danke, echt super deine DB
So jetzt aber was anderes, wenn ich jetzt über das Script die Infos rausbekomme die ich brauche, wie fülle ich damit meine "Maske" ?, beim Felder anlegen kann ich ihm ja nur ne Formel angeben, aber kein script (oder habe ich da jetzt was übersehen?)
-
Hi,
das geht über Script relativ einfach ..
Nutze dazu das Open- oder Postopen-Event des Dokumentes ..
Call uidoc.replaceitemvalue("Feldname", <IP-Adresse als Text>)
Sollte eigentlich ausreichen ..
Grüße von
Zimmi
-
hmm wenn ich das mit der
Call uidoc.replaceitemvalue("Feldname", <IP-Adresse als Text>)
mache, kommt folgendes beim Abspeichern
Not a sub or function name: UIDOC
Was den nu das schon wieder ???
(habe bis jetzt immer nur mit der Formelsprache gearbeitet)
mein script im QueryOpen sieht jetzt so aus:
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
Dim SI As New Sysinfo
SI.GetIPAddress, 64 , "IP Adresse des Host"
Call uidoc.replaceitemvalue("Testfeld", SI)
End Sub
Bei meinen glück ist der ganze Code ehh falsch :(
-
IP per Formel:könnte über @RegQueryValue(Schlüsselname; Unterschlüsselname; Wertname) gehen; allerdings wüßte ich jetzt nicht auf Anhieb, wo der Wert in der Registry steht.
eknori
Das geht zwar bezieht sich aber jeweils auf den Registryschlüssel der Netzkarte (unter W2K) sprich fkt. unter anderen W2K Rechnern bzw. unter NT gehts nicht...
-
... das uidoc ist nicht deklariert, also kommt die besagte Fehlermeldung...
... verwende stattdessen das Source, also...
Call Source.Document.ReplaceItemValue("Testfeld", SI)
ata
-
Har jetzt kommt erstmal keine Fehlermeldung mehr, thx ata
So jetzt jammert aber beim Abspeichern das Testfeld, weil es keine Formel enthält und demzufolge lässt es sich nicht abspeichern
-
... lass das Feld auf sich selbst berechnet sein...
ata
-
hmpf
es kommt immer noch die selbe Meldung, so jetzt mach ichs nochmal komplett neu ;)
und gleich noch paar Fragen ;)
a) wo kommt die "use" fürs script hin (ins Options von der Maske oder aber im Options für das Feld)
b) wo kommt nun der Code hin der auf das Script verweist (sprich die Abfragen) ins QueryOpen/PostOpen für die Maske oder aber ins Feld (bei Feld kann ich als Wert ja nur ne Formel übergeben und ne Auswahl zu JS, LS lässt Designer ned zu)
Argl, und ich wollte nie was mit LS zu tun haben
-
... wenn du immer noch die Meldung bekommst, dann hat das was damit zu tun, daß du ein berechnetes Feld ohne Formel hast.
... kontrolliere mal, ob die Formeln deiner berechneten Felder auch im richtigen Event "Wert" stehen...
Zu deinen Fragen:
a) wo kommt die "use" fürs script hin (ins Options von der Maske oder aber im Options für das Feld)
... wenn du es noch in einem anderen Feld benötigst, dann unter Globals der Maske in die dortigen Options,
... wenn du es nur in diesem Feld verwendest, dann eben nur in den Options des Feldes...
... um auf der sicheren Seite zu sein würde ich es in die Options in den Globals der Maske eintragen...
wo kommt nun der Code hin der auf das Script verweist (sprich die Abfragen) ins QueryOpen/PostOpen für die Maske oder aber ins Feld (bei Feld kann ich als Wert ja nur ne Formel übergeben und ne Auswahl zu JS, LS lässt Designer ned zu)
... das PostOpen ist denke ich der richtige Ort...
Argl, und ich wollte nie was mit LS zu tun haben
... dann geht dir eines der mächtigsten Tools in Notes durch die Lappen - grob fahrlässig mit Vorsatz - ;D - nur Geduld -
ata
-
entweder bin ich bekloppt oder Notes (aber wohl eher ersteres)
Jetzt habe ich die use die Globals der Maske
das Feld füllen in die PostOpen der Maske
und ein Feld erstellt (Text, berechnet beim Anlegen)
und jetzt jammert er mir immer noch: keine formel für berechnetes feld..aber ich will doch gar keine formel... das feld wird doch theoretisch über die Postopen gefüllt, da sage ich ihm doch das das feld mit dem Wert der Variable gefüllt werden soll, oder täusche ich mich da?
-
so jetzt ist es mir egal, ich schmeiss jetzt die schablone hier rein
vielleicht findet ja jemand den fehler den ich gemacht habe...
-
ich weiss nicht, wo das problem ist !!!
'use sysinfo' in die options...
Dim SI As New Sysinfo
Call Source.Document.ReplaceItemValue("Testfeld", SI.GetIPAddress)
in den postopen...
gut ist !!
gruss
-
@Karotte
... du hast einen Trugschluß in deiner Argumentation. Das Feld wird zwar im Postopen berechnet, trotzdem benötigt das Feld eine Formel, wenn es berechnet sein soll - nimm übrigens "Berechnet" und nicht "Berechnet beim erstellen" - und dann gib diesem Feld den eigenen Feldnamen als Formel mit - ohne Anführungsstriche...
ata
-
gut jetzt jammert notes nicht mehr, aber zeigt mir auch nur ne leere Maske an...
(ich will mein gutes altes COBOL oder PASCAL 3000 wiederhamm *flinte ins korn werf*)
-
... bleibt das Feld auch nach einem Refresh noch leer...
ata
-
sogar nach 10mal Refreshen ...
kannst du mal bitte das file angucken was ich ein tick weiter oben gepostet habe...
-
... so konnte das auch nicht gehen...
hier der funktionierende Code des PostOpen
Sub Postopen(Source As Notesuidocument)
Dim SI As New Sysinfo
Call Source.Document.ReplaceItemValue("Testfeld", SI.GetIPAddress)
End Sub
ata
-
D A N K E !!!!
ich glaub ich werd alt
ich glaube ich hätt dafür noch Jahre gebraucht ;)
-
... die Funktion SI.GetIPAddress liefert dir die IP-Adresse, die dann eingetragen werden soll. In deinem Script hattest du das ganze Objekt übergeben - und das kann natürlich nicht gehen...
... Stück für Stück...
ata ;D ;D ;D
-
ich glaub ich werd alt
das glaube ich auch, 5 posts und ~2,5h vorher war der korrekte quellcode auch schon gepostet
gruss
-
@Till
... dein Code war bereits absolut korrekt - ich dachte, daß er den schon verwendet und dann immer noch kein ergebnis bekommt, kann eigentlich nicht sein - bis ich dann die Demo ins Visier genommen habe...
ata
-
Jaja Asche über mein Haupt aber heute war einfach nicht mein Tag....
Mein Domino war heut der Meinung mal zu crashen und das als der Oberchefe ne ganz wichtige Mail erwartete...
aber ich fang gerade erst an mit LS, bis jetzt bin ich immer mit der Formelsprache ganz gut gefahren....