Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: wuwu am 08.09.04 - 16:24:41
-
hallo,
würde gerne per Script (button) ein Feld verbergen:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesForm
Dim vc As NotesItem
Set db = session.CurrentDatabase
Set view = db.GetForm("Vorschlag")
Set vc = Zeitfenster
mehr habe ich nicht und komm auch nicht weiter mit .ishidden usw.
danke für eure hilfe!
mfg
-
Das geht IMO nicht per Script. Du mußt eine Hide-When-Formel auf das Feld setzen und kannst dann höchstens über ein Flagfeld die Hide-When-Formel bedienen.
Also z.B. Hide-When setzen für Flagfeld=1 und dann im Script das Flagfeld entsprechend schießen. Das erfordert dann allerdings im UIDocument ein RefreshHideFormulas.
-
merci für die schnelle antwort, ich versteh aber leider nur bahnhof!
ich bin leider noch ein neuling im scriptn von notes dbs!
ich hoffe du kannst mir trotzdem weiter helfen!
mfg
-
Das sollte wohl machbar sein ;)
Du kannst auf das Feld eine Hide-When-Formel setzen (vorletzter Tab in den Feldeigenschaften, "Absatz verbergen, wenn..."). Also z.B. Flag="1".
Dann baust Du ein verstecktes Feld mit Namen "Flag" ein. Wenn das Feld den Wert "1" hat, wird das obige Feld verborgen.
Für das Verbergen per Button reicht dann eigentlich auch Formelsprache aus, z.B. so :
@SetField("Flag";"1");
@Command([RefreshHideFormulas])
-
spitzenklasse!
wie sieht die ganze geschichte dann aus im lotus script?
ich möchte gerne die geschichte vom anfang an im lotus script machen!
merci einstweilen!
mfg horst
-
Dann müßtest Du per Script das Feld "Flag" auf "1" schießen und für das NotesUIDocument ein RefreshHideFormulas absetzen.
Also in Kurzform
Call uidoc.FieldSetText("Flag", "1")
Call uidoc.RefreshHideFormulas
-
Hallo,
habe jetzt folgendes script gebastelt:
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = ws.CurrentDocument
Call uidoc.FieldSetText("Flag","1")
Call uidoc.RefreshHideFormulas
End Sub
er setzt den eintrag in flag, aber er macht die Aktualisierung nicht automatisch, das heist wenn ich den button gedrückt habe bzw. loslasse. er versteckt das feld erst wenn ich f9 mache warum?
merccccciiiiii
-
Ich hätte jetzt auch erwartet, dass es mit "RefreshHideFormulas" geht.
Welche Client-Version setzt Du ein?
Versuch mal ein: Call notesUIDocument.Refresh
-
Habs gerade getestet. das Feld muss im Backend gesetzt werden.
So gehts mei mir (R5.0.11):
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
'Call uidoc.FieldSetText("Flag","1")
doc.Flag = "1"
Call uidoc.RefreshHideFormulas
End Sub
-
spitzenklasse!
wie sieht die ganze geschichte dann aus im lotus script?
ich möchte gerne die geschichte vom anfang an im lotus script machen!
merci einstweilen!
mfg horst
Ich schliesse mich jetzt mal Todes allseits bekannter Meinung an: Warum denn nur verdammt noch mal LS in solchem Fall ? WOZU ?
Wer mit @functions nicht klar kommt, scheitert garantiert auch mit LS.
By the way: In LS müsste das Update des UI-Docs mit
Call NotesUIWorkspace.ViewRefresh
passieren.
Bernhard
-
By the way: In LS müsste das Update des UI-Docs mit
Call NotesUIWorkspace.ViewRefresh
passieren.
Na ja, dafür haben wir ja speziell die Methode uidoc.RefreshHideFormulas.
Macht imho auch Sinn, wenn man per LS die Hidewhens aktualisieren will, da doch sonst u.U. Feldvalidierungen zuschlagen, die man vielleicht hier noch gar nicht will.
Aber ansonsten gebe ich Dir vollkommen Recht: Ohne @Formula-Language - Kenntnisse und Einsatz ist es imho nahezu unmöglich, eine App sauber zu programmieren.
-
Wenn Du Anfänger bist, ist das der FALSCHE Ansatz.
Lerne ERST Formel- Sprache, und mache damit ALLES, was Damit geht. Und wenn Du in sehr ferner Zukunft mit Formel alleine nicht weiterkommst, DANN beschäftige Dich mit Script, aber keinen Tag vorher.
Gerade an Deinem Thread sieht man es wieder...
Formel- Lösung:
@SetField( "Flag" ; "1" );
@Command( [ViewRefreshFields] )
Script-Lösung:
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
'Call uidoc.FieldSetText("Flag","1")
doc.Flag = "1"
Call uidoc.RefreshHideFormulas
was ist wohl die effizientere Methode zu Programmieren !?
Tode
-
Wenn Du Anfänger bist, ist das der FALSCHE Ansatz.
Lerne ERST Formel- Sprache, und mache damit ALLES, was Damit geht. Und wenn Du in sehr ferner Zukunft mit Formel alleine nicht weiterkommst, DANN beschäftige Dich mit Script, aber keinen Tag vorher.
Gerade an Deinem Thread sieht man es wieder...
Formel- Lösung:
@SetField( "Flag" ; "1" );
@Command( [ViewRefreshFields] )
Script-Lösung:
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
'Call uidoc.FieldSetText("Flag","1")
doc.Flag = "1"
Call uidoc.RefreshHideFormulas
was ist wohl die effizientere Methode zu Programmieren !?
Tode
Wie ich schon gesagt hatte, Tode:
"Wer mit @functions nicht klar kommt, scheitert garantiert auch mit LS."
Notes ohne @functions ist unmöglich, und mit @functions lernt man zudem auch am ehesten die Notes-Interna.
Bernhard
-
Eine interessante Frage: Was ist besser, um Notes zu verstehen: Formel oder Script?
Ist es nicht eher Script mit dem Klassenmodell?
Bitte nicht falsch verstehen! Ich bin auch ein alter Notsi, der mit der Formelsprache groß geworden ist und diese intensiv eingesetzt hat. Inzwischen mache ich aber nur noch triviale oder "high-end" Sachen (Listen, Lookups etc.) damit, dazwischen kommt Script.
Andreas
-
Ich meine (Tode auch ;D):
FORMEL.
Weil: Man kriegt nicht den kleinsten Pippifax hin in Notes, ohne mit @functions umgehen zu können. Keine Ansicht, keine Gliederung, in Masken kein Hide-when und anderes ... es macht einfach keinen Sinn, Notes-(oder vor allem Domino-)Apps zu entwerfen, wenn man nicht eine fundierte Ahnung von @functions hat.
Ausserdem setzen diese immer DIREKT ein fundiertes Wissen über die Notes-Backgrounds voraus.
Daher meine Meinung: Wer sich mit @functions nicht auskennt, fällt IMMER mit LS auf die Nase. Professionelle Ansprüche setze ich jetzt dabei voraus. Logisch.
Bernhard
-
Eine interessante Frage: Was ist besser, um Notes zu verstehen: Formel oder Script?
Ist es nicht eher Script mit dem Klassenmodell?
Ich war ein Quereinsteiger mit wenig Vorwissen in Basic-Dialekten.
Zwangsläufig habe ich mit Formelsprache angefangen, komplett ausgereizt und hab dann mit LS begonnen, weil ich mit Formel einfach nicht mehr weiterkam. Für mich persönlich war das ein guter Weg.
Wenn Du mir Anfangs das Klassenmodell gezeigt hättest, dann hätte ich nur Bahnhof verstanden. Die Notes-Interna kenne ich aber nur wirklich, seit dem ich LS code.
Die Formelsprache hat mir persönlich die Notes-internas nicht aufgezeigt.
Mittlerweile mache ich es mit dem Einsatz von Formel & Script wie Du, Andreas (und wie wohl jeder, der das Know-how hat, Notes-Apps zu entwicklen)
-
Da stimme ich voll zu. Ohne Formelsprache geht es nicht. Aber die Formelsprache ist nicht unbedingt besser als Script geeignet, die Architektur von Notes besser zu verstehen.
Die Schwächen der Formelsprache sind aus meiner Sicht:
implizite Typzuweisung
kein "Option Declare"
keine Unterscheidung Feld oder Variable
teilweise unübersichtliche Reihenfolge der Ausführung von @Commands
kein Debugging
Die Stärken der Formelsprache sind aus meiner Sicht:
sehr wenig Codezeilen notwendig
Performance
einfaches Handling von Mehrfachwerten
TBC...
Andreas
P.S.: Evtl. sollten wir das als BP eröffnen? Hier geht es unter.
-
Aus meiner Erfahrung :
Ich kam aus der Welt Access/Visual Basic und bin dann auf Notes umgestiegen.
Angefangen habe ich mit der Formelsprache und erst, als das nicht mehr ausreichte, habe ich mich mit Script beschäftigt.
Allerdings finde ich, daß man durch das Erlernen von Script Notes wesentlich besser verstehen lernt, als wenn man nur mit der Formelsprache rumhantiert.
Also IMO sollte man auf jeden Fall mit den Grundlagen und Formelsprache beginnen und wenn man das intus hat, sich auf Script stürzen. Denn erst so kommt man tiefer in die Geheimnisse der Notes-Architektur.
-
Na ja, ich bin da wohl ziemlich atypisch :) von vielen verschiedenen Erfahrungen herkommend waren die zwei Stationen vor Notes Basic (Vorgänger von VB, VB(A) gabs dann parallel zu Notes für mich), unmittelbar davor Delphi und dann rein ins Notes. Dann aber gleich sowohl mit Formel wie auch mit Script und ich kann das nur jemandem empfehlen, der von der Theorie der Lerntechnik eine Ahnung hat, sonst klappt das nicht, weil es einfach zu umfangreich ist. Also bitte nicht nachahmen .....
-
Also ich als Notes-Anfänger (jetzt ein gutes Jahr) kann dazu sagen, das ich meine ersten Schritte auch mit Formula gemacht habe, aber dann damit immer relativ schnell vor eine Wand gerannt bin. Vor allem aber wohl, weil ich Sache die ich aus relationellen Datenbanken kannt auch in Notes nutzen wollte. Durch den Einsatz von Script kann ich nun auch einige Sachen nutzen, an die vorher nicht zu denken war.
Für mich ist Formula hauptsächlich unübersichtlich. Wenn man 2 oder 3 @If´s geschachtelt hat, dann braucht man ja schon ewig, um einen simplen Fehler wie eine falsche Klammer oder ein fehlendes " zu finden.
Und Notes-Internas zu verstehen... sowas masse ich mir garnicht an! ::)
-
Da halte ich für eine falsche Herangehensweise, Wutz.
Wenn Du mit @functions "vor die Wand gerannt bist", könnte das auch an Dir selbst gelegen haben ;D
Und: Wenn Du bei "w oder 3 @If's" durcheinander kommst, passiert Dir gleiches bei LS mit If und And und Or und den Klammern ... Hier kommt es bei beiden auf das Durchschauen der Logik an (und beides lässt sich gleichermasen gut oder schlecht lesen - man muss sich halt einarbeiten und gewöhnen). Und auch in LS habe ich schon syntaktisch korrekte verschachtelte Abfragen geschrieben, die aber LOGISCH falsch waren. Es gibt da wirklich keinen Unterschied.
Es gibt selbstverständlich viele Aufgaben, die ich lieber mit LS löse oder - vor allem - nur lösen kann. Bei einer professionellen Notes-Applikation kommt man aber logischerweise überhaupt nicht an @functions vorbei, da es in etlichen Design-Elementen die einzig zur Verfügung stehende Programmiermöglichkeit ist.
Wer also nicht bereit ist, sich in @functions wirklich fit zu machen, der wird auch nie eine hochwertige Notes-(oder Domino-)Applikation schreiben können.
Bernhard
-
Da kann ich Bernhard nur voll zustimmen.
Wenn man 2 oder 3 @If´s geschachtelt hat, dann braucht man ja schon ewig, um einen simplen Fehler wie eine falsche Klammer oder ein fehlendes " zu finden.
Das liegt nur am Aufbau Deines Codes.
Du kannst z.B. sowas verwenden:
_Bedingung1 := @If (......)
_Bedingung2 := @If(....)
_Bedingung3 := @If(Bedingung1 | Bedingung2; ......)
Formelsprache bietet da sehr viel zur Übersichtlichkeit.
Zugegeben: Perfekt ist die Fehlersuche nach falschen Klammern etc. nicht, und man kann darauf hereinfallen; aber ein übersichtlicher Codeaufbau kann vieles eingrenzen.