Hallo,
ich beziehe mich auf diesen Thread http://atnotes.de/index.php?topic=39840.0, den ich mal (erfolgreich) beendet habe.
Jetzt habe ich das gleiche Problem in einer anderen Anwendung. Ich bekomme nicht das Fenster "Möchten Sie speichern?"
Ich habs zwar so umgesetzt, wie damals, aber es will trotzdem nicht. Meine Vermutung ist, dass ich Frontend und Backend vermische oder nicht rechtzeitig (oder zu früh) das Frontend refreshe oder sowas.
Anbei mein Postopen, kann mir jemand sagen, warum ich die Frage nach dem Speichern nicht bekomme?
Danke!
Matthias
Sub Postopen(Source As Notesuidocument)
'########
' hier wird die globale Variable gvFrontendTicket gesetzt
Dim s As New NotesSession
Set gvFrontendTicket = source
Set gvBackendTicket = gvFrontendTicket.Document
Set gvDB = s.CurrentDatabase
'###
' wird beim öffnen eines tickets gesetzt, wenn es noch kein schattendokument gibt
If gvFrontendTicket.FieldGetText("copy") <> "" Then
Set gvBackendTicket = gvFrontendTicket.Document
Call gvFrontendTicket.FieldSetText("prioaufnehmender","")
Call gvFrontendTicket.Refresh
'Call gvFrontendTicket.Reload
End If
'##########################################
End Sub
Ja, mein Button macht das
Call ws.EditDocument(True, gvKopie)
' ' eindeutiges zeichen, dass das dok kopiert wurde
gvKopie.copy = "ja"
Vielleicht nochmal zum Vorgehen:
Ich habe ein Dok mit einem Button (Code oben), der erzeugt eine Kopie mit der selben Maske, wie das Ausgangsdokument und öffnet die Kopie im Bearbeitungsmodus.
Kann es ne Maskeneigenschaft sein? Felder automatisch aktualisieren ist angehakt.
Matthias
Das ist aktuelle mein Button
gvKopie.prioaufnehmender = ""
' Kopie im neuen Tab bearbeitbar öffnen
Call ws.EditDocument(True, gvKopie)
' eindeutiges zeichen, dass das dok kopiert wurde
gvKopie.copy = "ja"
Call gvKopie.Save( True, True )
Und das steht im Postopen
Sub Postopen(Source As Notesuidocument)
'########
' hier wird die globale Variable gvFrontendTicket gesetzt
Dim s As New NotesSession
Set gvFrontendTicket = source
Set gvBackendTicket = gvFrontendTicket.Document
Set gvDB = s.CurrentDatabase
'###
' wird beim öffnen eines tickets gesetzt, wenn es noch kein schattendokument gibt
If gvFrontendTicket.FieldGetText("copy") <> "" Then
Call gvFrontendTicket.FieldSetText("prioaufnehmender","hfgfhgsda")
'Call gvFrontendTicket.FieldSetText("prioaufnehmender","")
Call gvFrontendTicket.Refresh
'Call gvFrontendTicket.Reload
End If
'##########################################
End Sub
Mehr, als ein Feld im Frontend im Postopen ändern, kann ich nicht...
Matthias
Ich habe das Feld aus der Maske gelöscht UND im Postopen den Wert für SaveOptions im Backend auf 1 gesetzt.
gvBackendTicket.SaveOptions = 1
Call gvFrontendTicket.Reload
Call gvFrontendTicket.Refresh
Call gvFrontendTicket.FieldSetText("prioaufnehmender","dasdasdas")
Jetzt werde ich wieder gar nicht mehr nach dem Speichern gefragt. Ich glaube, mit dem Stringwert hat es besser funktioniert...
Auch wenn ich es nicht gebacken bekomme, geht das was ich will überhaupt? Hat jemand vielleicht ein funktionierendes Beispiel, an dem ich mich orientieren kann? Ich brauch ja kein fertiges Hexenwerk... :'(
Matthias
Allerdings habe ich im Queryclose jetzt das stehen
Sub Queryclose(Source As Notesuidocument, Continue As Variant)
If gvFrontendTicket.EditMode = True Then
If gvFrontendTicket.FieldGetText("meldung") = "" Then
Msgbox "Bitte einen Kurztext angeben. Es wird nicht gespeichert!",48,""
continue = False
Call gvFrontendTicket.FieldSetText("meldung","Keinen Kurztext eingetragen!")
Call gvFrontendTicket.GotoField("meldung")
Call gvFrontendTicket.FieldSetText("Error","1")
Exit Sub
End If
End If
End Sub
Wenn der User dann KEINE Änderung macht und einfach ESC drückt oder den Tab schließt, kommt die Frage! Deswegen dachte ich ja auch, dass meine Wahl für Postopen nicht richtig sei... Richtig sauber finde ich meine Lösung allerdings nicht...
Matthias