Autor Thema: workspace.ViewRefresh Problem  (Gelesen 3194 mal)

Offline littleS

  • Junior Mitglied
  • **
  • Beiträge: 78
workspace.ViewRefresh Problem
« am: 29.03.05 - 09:26:48 »
Hallo zusammen,

ich weiß nicht ob das Problem tatsächlich mit workspace.ViewRefresh zusammenhängt, also schildere ich erstmal den Programmablauf.
Es soll ein neuer Termin angelegt werden über eine Maske, die unter anderem ein RichText Feld enthält. Wenn ich einen neuen Termin anlege oder einen Termin ändere funktioniert alles problemlos, solange ich nichts am RichText Feld ändere. Wenn ich das RT Feld ändere, werden die Änderungen beim Speichern oder nach <ESC> und anschließendem Bestätigen das doch gespeichert werden soll, nicht übernommen.

Im Debugger sieht es dann so aus, daß ich in der Zeile
   If Continue Then Call gworkspace.ViewRefresh
die Fehlermeldung "Lotus Error - Specified Command is not available from the workspace" bekomme.
gworkspace ist im (Globals) Abschnitt des Moduls unter (Declarations) deklariert als
   Dim gworkspace As NotesUIWorkspace
Continue hat den Wert "-1".

Die Fehlermeldung taucht übrigens nur auf, wenn ich den Debugger benutze, andernfalls gibt es keine Fehlermeldung. Die Änderungen werden halt nur nicht gespeichert.


Viele Grüße

s.
« Letzte Änderung: 31.03.05 - 08:28:31 von littleS »

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: workspace.ViewRefresh Problem
« Antwort #1 am: 29.03.05 - 09:43:55 »
die Fehlermeldung kommt, weil beim Debuggen der Debugger im Fokus ist und nicht die Ansicht.

Ein ViewRefresh wirkt sich nur auf Ansichten im FrontEnd aus und nicht auf RT-Felder.

Wo änderst Du das RT-Feld (BackEnd oder FrontEnd)?
Gruß
Dirk

Offline littleS

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: workspace.ViewRefresh Problem
« Antwort #2 am: 29.03.05 - 09:53:52 »
Wo änderst Du das RT-Feld (BackEnd oder FrontEnd)?
Hmm, weiß ich nicht  :-[, woran erkennt man den Unterschied?

Ah okay, ich denke es ist BackEnd.
« Letzte Änderung: 29.03.05 - 09:59:00 von littleS »

klaussal

  • Gast
Re: workspace.ViewRefresh Problem
« Antwort #3 am: 29.03.05 - 09:58:24 »
Frontend-Klassen haben immer ein "...UI...".

Offline littleS

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: workspace.ViewRefresh Problem
« Antwort #4 am: 29.03.05 - 10:12:55 »
Also ich schreib mal was Code

Dim gworkspace As NotesUIWorkspace
Dim gdoc As NotesDocument
Dim bTerminInfoChanged As Boolean
Dim bSpeichernButton As Boolean

Der User drückt <ESC> -> Aufruf von QueryClose(...)

Source.GotoField("TerminThema") '// Fokus auf ein TextFeld, damit OnChange im
                                                      '// RT Feld ausgelöst wird   
If gdoc.SaveOptions(0) = "0" Then
   Call SaveTest(Continue,bSpeichernButton)
   If Continue Then Call gworkspace.ViewRefresh
End If


'// OnChange des RT Feldes TerminInfos
Sub Onchange(Source As Field)
  gdoc.SaveOptions = "0"           '// verhindert default Dialogbox "Ob gespeichert
                                                   '// werden soll"
  bTerminInfoChanged=True       '// das RichText Feld wurde verändert   
End Sub

'// SaveTest
Sub SaveTest(weiter As Variant, DoSave As Boolean)
  Dim unterschied As Boolean
  unterschied = False
  unterschied = bTerminInfoChanged
  If unterschied Then
    ret = Messagebox("Möchten Sie Ihre Änderungen speichern?",3,"Lotus Notes")
    Select Case ret
      Case 2:
         weiter = False
         Exit Sub
      Case 6:                      '// Ja Button
         Call SaveDok()
     End Select
  End If

  weiter = true
  exit sub
End Sub


'// SaveDok()
Public Sub SaveDok()
  Call gdoc.Save(True,True,True)
End Sub



klaussal

  • Gast
Re: workspace.ViewRefresh Problem
« Antwort #5 am: 29.03.05 - 10:50:35 »
Ich würde in den SaveTest den Continue mit aufnehmen  und den Variant jeweils auf True bzw. False setzen. Und natürlich Option Declare setzen.

Offline littleS

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: workspace.ViewRefresh Problem
« Antwort #6 am: 30.03.05 - 08:42:26 »
Moin,

also mir fehlt ein wenig der Durchblick :)
Wenn ich die Maske über einen "Speichern" Button beende, wird QuerySave() aufgerufen und einige Tests durchgeführt. Danach wird in QueryClose() gesprungen, wo dann das eigentliche Speichern angestossen wird. Wenn ich die Maske über "ESC" verlasse wird sofort in QueryClose() gehopst und wenn ich anschließend bei der Abfrage ob meine Änderungen doch gespeichert werden sollen mit "JA" antworte, taucht die Fehlermeldung bei dem gworkspace.ViewRefresh auf und die Aktualisierung wird nicht gespeichert oder zumindest nicht sichtbar.
Beim direkten Speichern über den Button werden ab QueryClose() fast die gleichen Codezeilen angesprungen und in der Zeile gworkspace.ViewRefresh taucht kein Fehler auf und meine Änderungen werden gespeichert.

Wäre dankbar für Hinweise :)

Viele Grüße

s.

Offline littleS

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: workspace.ViewRefresh Problem
« Antwort #7 am: 30.03.05 - 08:46:44 »
Hmm,
ich merke gerade, daß das Thema wohl besser nach "Domino 6: Entwicklung" passen würde :)

Offline littleS

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: workspace.ViewRefresh Problem
« Antwort #8 am: 30.03.05 - 10:52:42 »
Ein ViewRefresh wirkt sich nur auf Ansichten im FrontEnd aus und nicht auf RT-Felder.

Wie bekomme ich es denn hin, daß Änderungen an RT Feldern gespeichert werden?

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: workspace.ViewRefresh Problem
« Antwort #9 am: 30.03.05 - 11:01:01 »
vom Prinzip her müsste es so aussehen:
- UI-Dokument speichern
- RT-Feld im BackEnd bearbeiten
- BackEnd-Dokument speichern
- UI-Dokument schließen ohne zu speichern (sonst wird das RT-Feld überschrieben
- Backend-Dokument im UI öffnen (NotesUIWorkSpace.EditDocument(True, NotesDocument)
Gruß
Dirk

Offline littleS

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: workspace.ViewRefresh Problem
« Antwort #10 am: 30.03.05 - 11:41:22 »
Hallo  ;D
das Problem ist scheinbar behoben, vielleicht kann ja mal jemand drüber schauen.
In obiger SaveTest() Funktion habe ich folgendes ersetzt.

Case 6:
  '// UI Dokument speichern
  guidoc.Save
  '// RT Feld im Backend bearbeiten
         
  '// BackEnd Dokument speichern
  Call SaveDok()
  '// UI Dokument ohne speichern, schließen
  guidoc.Close
  '// BackEnd Dokument im UI öffnen
  Set guidoc = gworkspace.EditDocument(True, gdoc)
  guidoc.Close
End Select

Was mich etwas stutzig macht ist die Tatsache, daß das ganze funktioniert, ohne daß ich das Dokument im BackEnd upgedated habe. Ich dachte zum Testen der übrigen Codezeilen laß ich es einfach mal weg, da mir das kopieren des RT Feldes aus dem Frontend Dok in das RT Feld des BackEnd Dokuments zu schwierig war.

Fazit: Problem behoben (vermutlich 5 neue erstellt) und das Problem vorm Bildschirm ist noch verwirrter als zuvor.


s.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz