Autor Thema: Eingebettete Maske ->@if "refreshen"  (Gelesen 8172 mal)

Offline DonPromillo

  • Junior Mitglied
  • **
  • Beiträge: 78
  • Ich liebe dieses Forum!
Eingebettete Maske ->@if "refreshen"
« am: 26.11.04 - 11:29:21 »
Argl, ich kriege wieder mal was nicht hin, ...

Grundproblem: Ich will zwei Layouts, je nachdem ob das Doc im Bearbeiten oder lesen Modus ist.

Tolle Idee: Lsg. über Teilmasken -> @if(@isdocbeingedited;"edit";"")

Geht nur leider nicht, da die Maske im Lesemodus  zuerst geöffnet werden soll.
Habe eine Aktion erstellt, um das Doc dann zu bearbeiten:
@Command( [EditDocument]; "1" );
@Command([RefreshHideFormulas])

Dummerweise wird nur die eingebettete Teilmaske nicht "refreshed"
Habe hier irgendwo gelesen, dass das nur per kompletten Doc -refresh mittels LS geht.

Gibts hier auch eine Formel Möglichkeit?

Ich kann das Problem leider nicht über "hide when" lösen, da in der teilmaske zig Felder bereits mit "hide when" belegt sind  :'(

Danke und Gruß
Frank


Driri

  • Gast
Re: Eingebettete Maske ->@if "refreshen"
« Antwort #1 am: 26.11.04 - 11:35:08 »
Teilmasken werden nur beim Öffnen des Dokuments berechnet.

In deinem Fall würde ich lieber Abschnitte verwenden.

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Eingebettete Maske ->@if "refreshen"
« Antwort #2 am: 26.11.04 - 12:08:15 »
Hi,

per Formel geht das nicht. Dazu brauchst du Script.

Anton (ata) hat auf seiner Homepage was dafür im Angebot.
Hier gings mal um so ein ähnliches Thema.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline DonPromillo

  • Junior Mitglied
  • **
  • Beiträge: 78
  • Ich liebe dieses Forum!
Re: Eingebettete Maske ->@if "refreshen"
« Antwort #3 am: 26.11.04 - 12:35:22 »
@Driri: Danke für den Tip, dummerweise funktioniert Verbergen nicht mehr! (Auch nicht wenn ich's auf "Absatz verbergen ...Notes" komplett einstelle!

@Axel: Yo, das Skript ist genau was ich brauche, blöde Frage: Wie kriege ich das in einen Button? (LS-DAU!!!)

Was mir aufgefallen ist: @isdocbeingedited geht erst auf true, sobald ich etwas ändere,... dafür bräuchte ich jedoch die Teilmaske  >:(
Gibt's da auch so was wie @isdoc"im_edit_mode" ?

thx

Nachtrag: Habe tollerweise auch auf ATAs Seite den Code gefunden, ein Feld zu aktualisieren, stand-alone kriege ich das schon zum laufen, nur bräuchte ich beide integriert in einer Aktion?
Tipps, Hilfe ???
« Letzte Änderung: 26.11.04 - 12:54:33 von DonPromillo »

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Eingebettete Maske ->@if "refreshen"
« Antwort #4 am: 26.11.04 - 13:18:09 »
Hi,

das ist ein ganz normale Funktion. Du kopierst den Code von der Zeile Function... bis End Function in die Zwischenablage und im Designer erstellst du dir einen Aktionsbutton und stellst dort LotusScript ein. Im Abschnitt Options fügst du den Inhalt ein. Im linken Fenster siehst du dann den Namen der Funktion und kannst dann im Click-Event darauf zugreifen.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline DonPromillo

  • Junior Mitglied
  • **
  • Beiträge: 78
  • Ich liebe dieses Forum!
Re: Eingebettete Maske ->@if "refreshen"
« Antwort #5 am: 26.11.04 - 13:33:10 »
...  und kannst dann im Click-Event darauf zugreifen.


Und genau das ist mein Problem  :-[ finde nirgends wie das funktioniert!

Gruß
Frank

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Eingebettete Maske ->@if "refreshen"
« Antwort #6 am: 26.11.04 - 13:56:16 »
Hi,

den Click-Event hast du gefunden und die Funktion hast du auch reinkopiert, oder?

Im Click-Event fügst du folgenden Code ein:

Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc AS NotesDocument
Dim ret As Integer

'Handle auf das aktuelle Dokument besorgen
Set uidoc = ws.CurrentDocument

'Damit werden Backend-Methoden nutzbar
Set doc = uidoc.Document

'Zugriff auf die ReOpen-Funktion
ret = ReOpen(doc)

Voraussetzung ist, dass der Aktionsbutton in der Maske eingefügt wurde. Deinen eigenen Code musst du entsprechend dazwischen packen.


Axel

PS: Du solltest dich umgehend mit LotusScript vertraut machen, denn vieles lässt sich eben nur mit Script realisieren.
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline DonPromillo

  • Junior Mitglied
  • **
  • Beiträge: 78
  • Ich liebe dieses Forum!
Re: Eingebettete Maske ->@if "refreshen"
« Antwort #7 am: 26.11.04 - 14:49:39 »
Danke erstmal, bin schon weiter,...

das reOpen wird aufgerufen,... meine aktuelle Fehlermeldung:

"Vorgabemaske nicht gefunden"

Debug bleibt hier hängen:

Set uidoc = ws.EditDocument(True , docThis)

Ideen?

Gruß
Frank

@Axel: Welches Tutorial / Buch würdest du denn für den Einstieg empfehlen?

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Eingebettete Maske ->@if "refreshen"
« Antwort #8 am: 26.11.04 - 14:57:18 »
Hi,

ich habe schon viel Gutes über die Bücher vom Herdt-Verlag gehört und das Buch Domino Designer 5 ist auch nicht schlecht.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline DonPromillo

  • Junior Mitglied
  • **
  • Beiträge: 78
  • Ich liebe dieses Forum!
Re: Eingebettete Maske ->@if "refreshen"
« Antwort #9 am: 26.11.04 - 15:09:50 »
Danke, werde mir mal eins davon bestellen  8)

Hast du auch eine Idee, woher die Fehlermeldung kommen könnte?
Ich habe es inzw. auch mal in einer komplett neuen Maske getestet,... selbe Fehlermeldung...



Gruß
Frank
« Letzte Änderung: 26.11.04 - 15:55:03 von DonPromillo »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Eingebettete Maske ->@if "refreshen"
« Antwort #10 am: 27.11.04 - 01:04:44 »
"Vorgabemaske nicht gefunden" ist doch easy, Frank: Deine DB hat keine. Und das gibt Probleme in vielen Richtungen. Ergo: Definiere immer eine Vorgabemaske und Vorgabeansicht.

Warum der Code diese Meldung aber provoziert - keine Ahnung. Poste bitte mal Deinen Code (ich mag jetzt hier nicht erst selbst dem Link-Dschungel folgen). Einen Grund hierfür muss es ja geben. Naherliegenderweise ist der Aufruf eines Documents mit fehlender Information über die Maske oder mit einem Maskennamen, den es in der DB nicht gibt. Der Fehler sollte mit mehr Infos aber einfach zu ermitteln sein.

HTH,
Bernhard

Offline DonPromillo

  • Junior Mitglied
  • **
  • Beiträge: 78
  • Ich liebe dieses Forum!
Re: Eingebettete Maske ->@if "refreshen"
« Antwort #11 am: 29.11.04 - 10:15:08 »
Hallo Bernhard,
vielen Dank schon mal!
hier der Code vom "Click-Event"

Sub Click(Source As Button)
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Dim ret As Integer   
   Set uidoc = ws.CurrentDocument
   Set doc = uidoc.Document
   ret = ReOpen(doc)
   
End Sub

und hier von der ReOpen Funktion:

Function ReOpen(docThis As NotesDocument) As Integer
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim dbThis As NotesDatabase
   Dim unid As String
   
   ReOpen = 0
   Set dbThis = docThis.ParentDatabase
   Call docThis.Save(True , True)
   unid = docThis.UniversalID
   docThis.SaveOptions = "0" ' # ... Speicherabfrage vermeiden
   Set uidoc = ws.CurrentDocument
   Call uidoc.Close
   Set docThis = dbThis.GetDocumentByUNID(unid)
   Set uidoc = ws.EditDocument(True , docThis)
   Set docThis = uidoc.Document
   If docThis.HasItem("SaveOptions") Then 
            ' # ... das Feld SaveOptions wieder entfernen...
      docThis.RemoveItem("SaveOptions")
      Call docThis.Save( True , True )
   End If
   ReOpen = 1
   Print "Das Dokument wurde erneut geöffnet"
End Function


OK, Vorgabemaske ist eingerichtet, die Zeile, bei der er momentan hängt ist:
If docThis.HasItem("SaveOptions") Then 

Fehlermeldung nun: "Object variable not set"

Gruß
Frank

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Eingebettete Maske ->@if "refreshen"
« Antwort #12 am: 29.11.04 - 11:12:08 »
Hi,

überprüf mal mit dem Debugger ob die Variable docThis gesetzt ist.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline DonPromillo

  • Junior Mitglied
  • **
  • Beiträge: 78
  • Ich liebe dieses Forum!
Re: Eingebettete Maske ->@if "refreshen"
« Antwort #13 am: 29.11.04 - 12:41:53 »
gerne, wenn ich wüßte wie ich das herausfinden kann!?!?!?

Frank

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Eingebettete Maske ->@if "refreshen"
« Antwort #14 am: 29.11.04 - 12:53:29 »
File - Tools - Debug LotusScript

einschalten, den Agenten starten und ihm bei der Arbeit zusehen
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline DonPromillo

  • Junior Mitglied
  • **
  • Beiträge: 78
  • Ich liebe dieses Forum!
Re: Eingebettete Maske ->@if "refreshen"
« Antwort #15 am: 29.11.04 - 13:00:14 »
Aah, der Teil mit den Variablem war fieserweise verborgen,  :o

@Axel: gut getippt, docThis steht ohne Wert im debugger!

Was nun? Muss man das Ding extra dim(ensionieren)?

Frank

Nachtrag: Der Wert wird übergeben, nur die Zuordnung von
Set docThis = UiDoc.document
klappt nicht!
« Letzte Änderung: 29.11.04 - 13:04:15 von DonPromillo »

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Eingebettete Maske ->@if "refreshen"
« Antwort #16 am: 29.11.04 - 13:05:10 »
Verwende mal Option Declare und dimme alle Variablen, verhindert Teppfihler  ;)

Weiter, beobachte doch mal, wann Dir das Doc verloren geht, da ist ja schon eine komplizierte Geschichte davor.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline DonPromillo

  • Junior Mitglied
  • **
  • Beiträge: 78
  • Ich liebe dieses Forum!
Re: Eingebettete Maske ->@if "refreshen"
« Antwort #17 am: 29.11.04 - 13:14:21 »
Eha,

Set uidoc = ws.editDocument(true, docThis)

nach dieser Zeile steht auf einmal der windowtitle auf Navi, ... meiner Navigationsleiste (linker Frame im Frameset, rechter = main, dort (sollte) alles geöffnet werden!)

Würde mal laienhaft darauf tippen das es damit zu tun hat!

Liegt das vielleicht am Frameset?

Gruß Frank
« Letzte Änderung: 29.11.04 - 19:07:18 von DonPromillo »

Offline DonPromillo

  • Junior Mitglied
  • **
  • Beiträge: 78
  • Ich liebe dieses Forum!
Re: Eingebettete Maske ->@if "refreshen"
« Antwort #18 am: 29.11.04 - 19:33:20 »
Ahhh, lange gefriemelt, aber was gefunden:

Sobald der Auto-Rahmen aktiviert ist, (Rahmengruppe "start", Rahmen "main") tritt der Fehler auf!!!
Deaktiviere ich diese Option, funktioniert das skript, nur dummerweise nicht mehr in der Rahmengruppe, sondern NUR das Doc!

Hat jmd. Ideen wie ich das LS anpassen müsste, damit das ganze auch im Frameset funktioniert....??????????????

Grüße
Frank

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Eingebettete Maske ->@if "refreshen"
« Antwort #19 am: 29.11.04 - 19:38:14 »
Hi,

ich hab' zwar in der Richtung noch nichts gemacht, aber versuch's mal so:

...
Call uidoc.Close
Set docThis = dbThis.GetDocumentByUNID(unid)
Call ws.SetTargetFrame("Hier kommt der Name des Rahmens rein" )
Set uidoc = ws.EditDocument(True , docThis)
Set docThis = uidoc.Document
If docThis.HasItem("SaveOptions") Then 
...


Füge mal die fettgedruckte Zeile an die entsprechende Stelle ein.
Ich kann dir aber nicht versprechen ob's was bringt.


Axel


Ohne Computer wären wir noch lange nicht hinterm Mond!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz