Autor Thema: Bug im Exiting-Event?  (Gelesen 7355 mal)

TomLudwig

  • Gast
Bug im Exiting-Event?
« am: 27.02.07 - 09:10:48 »
Guten Morgen zusammen,

ich habe im Exiting-Event von Feldern Script Code, der das UIDoc refreshed.
Dieser funktioniert auch einwandfrei.

ABER:
Über eine weitere Aktion werden folgende Aktionen nacheinander ausgeführt:
- Werte werden über FieldSetText ins UIDoc geschrieben
- UIDoc wird gespeichert
- EditMode des UIDocs wird auf False gesetzt
- Wete werden ins zugehörige BackEnd Dokument geschrieben
- BackEndDokument wird gespeichert
- EditMode des UIDocs wird auf True gesetzt um die BackEnd Änderungen anzuzeigen

Danach funktioniert der Code im Exiting Event der Felder nicht mehr. Er wird gar nicht mehr ausgeführt. Es ist egal ob die Felder in einer Teilmaske oder in der Maske selbst liegen. Der Fehler tritt beim 6.5.4er Client auf. Ich bilde mir ein, dass ich mit 6.5.5 den Fehler nicht hatte.

Sollte das Dokument neu geöffnet werden, funktioniert der Code im Exiting Event anschließend.
(über setzten der EditMode Eigenschaft wird doch im Hintergrund das Dokument "neu geöffnet"...?!)

Kann das jemand nachvollziehen?

Viele Grüße Tom



botschi

  • Gast
Re: Bug im Exiting-Event?
« Antwort #1 am: 27.02.07 - 09:42:25 »
Moin,

warum setzt Du das Dok denn von bearbeitbar auf nicht bearbeitbar und zurück? Würde UIdoc.refresh nicht genügen, um die Änderungen aus dem Backend in das Frontend zu bekommen?

Matthias

TomLudwig

  • Gast
Re: Bug im Exiting-Event?
« Antwort #2 am: 27.02.07 - 09:45:46 »
Refresh berechnet doch nur die Felder neu, oder?
Ich habe ja Felder vom Typ "bearbeitbar" die geändert werden.

Reload zieht mir leider nicht die Änderungen an RichtTextFeldern ins UIDoc, oder?


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: Bug im Exiting-Event?
« Antwort #3 am: 27.02.07 - 09:51:41 »
Reload zieht mir leider nicht die Änderungen an RichtTextFeldern ins UIDoc, oder?

Das ist richtig, aber seit Version 5 gibt es beim Refresh einen Parameter. Wenn du den auf True setzt, werden auch Richtextfelder berücksichtigt.#


Call notesUIDocument.Refresh( [ IncludeRichTextItems ] )


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

TomLudwig

  • Gast
Re: Bug im Exiting-Event?
« Antwort #4 am: 27.02.07 - 09:55:28 »
Laut der Hilfe, werden aber dennoch mit "refresh(true)" nur die berechneten Felder neu berechnet.

Refreshes a document. When you refresh a document, its computed fields are recalculated.

Usage
This method is valid only when the document is in Edit mode.
This method is useful when the value of a computed field depends upon the contents of another field on the document.


Ich müsste dann beide Befehle "reload" und "refresh" nacheinander absetzten. Und die ganzen Felder müssten berechnet sein... sehe ich das richtig?

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: Bug im Exiting-Event?
« Antwort #5 am: 27.02.07 - 10:58:03 »
Und wieso willst du bearbeitbare Felder neu berechnen?. Das macht (außer vielleicht für RTF-Felder) in meinen Augen keinen Sinn?


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

TomLudwig

  • Gast
Re: Bug im Exiting-Event?
« Antwort #6 am: 27.02.07 - 11:10:01 »
Ich will gar nix neu berechnen.... sorry. Missverständnis.

Ich möchte lediglich die Informationen, welche ich im Backend ändere (richt text & non richt text) im FrontEnd angezeigt bekommen.

Dies hat bei mir lediglich mit dem Edit-Mode Wechsel funktioniert...

Und danach möchte ich, das das Exiting Event der Felder weiterhin funktioniert. ;-)

botschi

  • Gast
Re: Bug im Exiting-Event?
« Antwort #7 am: 27.02.07 - 11:22:28 »
Kannst Du nicht gleich im Frontend ändern? WIe werden die Werte denn im Backend geändert?
Aber Speicherkonflikte sind noch nicht aufgetreten?

Matthias

TomLudwig

  • Gast
Re: Bug im Exiting-Event?
« Antwort #8 am: 27.02.07 - 12:05:12 »
Speicherkonflikte noch nie. Ich schau ja, dass das Dokument vorher gespeichert wird usw.

Ich kann leider nur im BackEnd ändern, da ich z.B. ein RichTextfeld (mit einem eingebetteten Bild) aus einem anderen Dokument kopieren muss. Dies geht soweit ich weiß nur über BackEnd, oder?


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: Bug im Exiting-Event?
« Antwort #9 am: 27.02.07 - 12:29:53 »
Und wenn du nur das RTF-Feld im Backend kopierst und alles andere mit Frontend-Methoden?

Irgendwie erschließt sich mir der Sinn der ganzen Aktion noch nicht so ganz. Kannst du mal kurz skizzieren was du überhaupt vorhast und was das Ganze werden soll.


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

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: Bug im Exiting-Event?
« Antwort #10 am: 27.02.07 - 12:43:00 »
Auf das EditMode- und Refresh-Gefrickel kannst Du verzichten: Hole Dir per Set NotesDocument=NotesUIDocument.Document das Backend, schliesse anschliessend Dein Frontend-Dokument und rufe es per Call NotesUIWorkspace.EditDocument(True, NotesDocument) wieder auf. Die Änderungen im RichText sind dann sichtbar.
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

TomLudwig

  • Gast
Re: Bug im Exiting-Event?
« Antwort #11 am: 27.02.07 - 12:58:32 »
Ich kann das Dokument nicht schließen und erneut öffnen, da bei dieser Aktion dann weiter Aktionen im Hintergrund ausgeführt werden die ich nicht möchte und auch nicht beeinflussen kann.

Ich möchte aus einem bestehenden Dokument Informationen ins aktuelle Dokument übernehmen. Diese sind zum einen reine TextInformationen, die im UIDoc geschrieben werden können. Aber auch ein eingebettetes Bild, welches in einem RichTextFeld hinterlegt ist. Dieses kann, soweit ich weiß, nur im Backend kopiert werden. Oder gibts da eine andere Möglichkeit?

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: Bug im Exiting-Event?
« Antwort #12 am: 27.02.07 - 13:00:51 »
Und wenn du nur das RTF-Feld im Backend kopierst und alles andere mit Frontend-Methoden?


Hast du das mal probiert? Und dann natülich ein Refresh(True).


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

TomLudwig

  • Gast
Re: Bug im Exiting-Event?
« Antwort #13 am: 27.02.07 - 13:46:39 »
Ich habs grad mit sämtlichen Kombinationen von Refresh und Reload ausprobiert.

Ich habe ein uidoc offen gehe über uidoc.document ins backend. Ändere dort das RichtTextitem und versuche dies wieder ins Frontend zu bekommen. -> keine Chance.

Hat jemand vielleicht ne BeispielMaske in der ich das ganze nachvollziehen kann?

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: Bug im Exiting-Event?
« Antwort #14 am: 27.02.07 - 13:58:04 »
Zitat
Ich möchte aus einem bestehenden Dokument Informationen ins aktuelle Dokument übernehmen. Diese sind zum einen reine TextInformationen, die im UIDoc geschrieben werden können.
??? Ja, aber warum tust Du das? Warum schreibst Du nicht gleich die kompletten Informationen ins Backend und öffnest das dann wieder im Frontend wie beschrieben?
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

TomLudwig

  • Gast
Re: Bug im Exiting-Event?
« Antwort #15 am: 27.02.07 - 14:20:38 »
Die Maske ist Teil eines CRM Moduls. Beim Schließen und Öffnen dieser wird sehr viel Code ausgeführt der dazu führt, dass verschiedene Stati gesetzt werden. Mails verschickt werden usw.
Ich kann diesen Code nicht ändern, da er sehr sehr umfassend ist und auch an mehreren Stellen in der Datenbank wiederverwendet wird.

Wie ich die Informationen ins Dokument bekomme (BackEnd oder FrontEnd) ist mir relativ egal. Sie müssen dann nur im Dokument sichtbar sein ohne, dass es geschlossen und erneut geöffnet wird.
Und bei den Informationen handelt es sich um reine Textinformationen (Textfelder) und Bilder in RichtTextFeldern.

Das hat ja auch über den Edit-Mode bisher wunderbar funktioniert. Bis auf den "Bug" im Exiting Event der Felder. Dieses Event wird (wie ganz oben beschrieben) nicht mehr ausgeführt.
Und ich möchte wissen warum....


« Letzte Änderung: 27.02.07 - 14:22:19 von TomLudwig »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Bug im Exiting-Event?
« Antwort #16 am: 27.02.07 - 14:23:16 »
Wenn Du die Quelldokumente im EditMode öffnen kannst, dann kannst Du die RT-Inhalte auch im Frontend über die Copy- und Paste-Methoden des NotesUIDocuments holen. Ansonsten ist ein ReOpen zwingend erforderlich.

Bernhard

TomLudwig

  • Gast
Re: Bug im Exiting-Event?
« Antwort #17 am: 27.02.07 - 14:25:44 »
Geht leider auch nicht, da des RichtTextFeld berechnet ist.
Sorry. Den Teil hab ich wirklich vergessen zu schreiben.

Bisher hat die Aktualisierung ohne ReOpen ja funktioniert.
Ich scheitere nur am Exiting Event.

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: Bug im Exiting-Event?
« Antwort #18 am: 27.02.07 - 15:03:49 »
Zitat
Beim Schließen und Öffnen dieser wird sehr viel Code ausgeführt
Doch sicher im Query- bzw. Post-Save, oder?
Wenn Du den "sehr viel Code" nicht ausführen willst, setzt Du dort ganz am Anfang eine Abfrage in der Art
Code
If NotesUIDocument.FieldGettext("SollCRMCodeLaufen")="0" Then
Continue = False
End If
Dann schreibst Du Deine Werte (inkl. dem berechneten RTItem-Inhalt) ins Backend, stoppst mit Call NotesUIDocument.FieldSettext("SollCRMCodeLaufen","0") den Ablauf des Codes im Query- und/oder Post-Save des NotesUIDocument, schliesst es (verhinderst ggf. eine Speicher-Abfrage per NotesUIDocument.FieldSetText("SaveOptions","0") und öffnest es wieder.
Et voilà.
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

TomLudwig

  • Gast
Re: Bug im Exiting-Event?
« Antwort #19 am: 27.02.07 - 15:27:20 »
Natürlich kann über die unten beschriebene Abfrage verhindert werden, dass der Code ausgeführt wird.

Die Abfrage müsste dann in allen betroffenen Events eingebaut werden. In der Maske und in allen geladenen Teilmasken. Weiter müsste in allen weiteren Masken, in denen die veränderten Teilmasken geladen werden, zusätzlich immer bei jeder Aktion der Status des Feldes gesetzt werden.

Das ist einfach nicht machbar. Es handelt sich hier um ca. 5 Teilmasken die in mehr als 30 Masken geladen werden.

Und meine Ursprüngliche Frage bezieht sich nicht auf das Einfügen von diversen Feldwerten. Mir gehts um das Exiting Event der Felder und warum dieses nicht mehr ausgeführt wird.


 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz