Domino 9 und frühere Versionen > ND7: Entwicklung

Dokument im Frontend nicht speichern, im Backend speichern

(1/3) > >>

Mirko:
Hallo alle miteinander,

ich habe schon mal eine Weile gesucht, aber noch nicht das passende gefunden. Deshalb werde ich mein Problem mal schildern, vielleicht hat je jemand eine Idee.

Ein Dokument soll per Button einen neuen Status bekommen, Änderungen des Anwenders über den "Möchten Sie Speichern"-Dialgog gespeichert (oder nicht!!!) werden. Der Anwender soll gefragt werden, da im Querysave das Ändern von Daten (Speichern) geloggt wird. Dann soll im Backend der Status geändert und das Dokument gespeichert werden. Soweit die Theorie. Ich verwende folgenden Code:

--- Code: --- Dim db As NotesDatabase
Dim id As String
Set db = ws.CurrentDatabase.Database
id = ws.CurrentDocument.Document.UniversalID -->> Ich gehe den umweg über die DokumentenID
Dim newdoc As NotesDocument
ws.CurrentDocument.EditMode=False  -->> hier kommt die Abfrage "möchten Sie.." beantwortet mit nein
Call ws.CurrentDocument.Close(True)
Set newdoc=db.GetDocumentByUNID(id)
Call setstatus(newdoc,newstate)  -->> Ändert das Statusfeld und ein paar Texte (Backend)
Call newdoc.Save(True,False)

--- Ende Code ---
Hat der Anwender nichts geändert, klappt alles wie es soll. Hat er aber z.B. einen Namen geändert und entscheidet sich beim Speicherdialog für nein, so wird trotzdem der neue Name im Dok gespeichert. Witzigerweise kann ich im Debugger bis zum Schluß den alten Namen sehen. Wenn ich dann das Dokument wieder öffne, steht allerdings die ungewollte Änderung drin :-:
Nun habe ich schon den Umweg über die ID genommen um garantiert ein "anderes" Dokument im Backend zu öffnen, hilft aber nicht. Komisch ist auch, dass ich im Debugger noch auf das ui-Dokument zugreifen kann, nachdem ich es mit "Close" geschlossen habe.
Sicher habe ich nur was übersehen, aber was ???

Viele Grüße
Mirko

koehlerbv:
Warum reicht Dir dann kein

Set NotesUIDocument = NotesUIWorkspace.CurrentDocument
NotesUIDocument.Document.Status = "Neuer Status"
Call NotesUIDocument.Close
?

Der Status ist geändert, wird aber nur im QuerySave gespeichert, wenn der User die Standard-Abfrage mit "Ja" beantwortet.

Bernhard

Mirko:
Hallo Bernhard,

der Status soll immer gespeichert werden, egal ob sich der Benutzer für oder gegen das Speichern entscheidet. Sinn des Ganzen ist die Weiterleitung an eine andere Abteilung.

Gruß Mirko

koehlerbv:
Dann mache ein verstecktes Feld "Berechnet zur Anzeige" (!). Dein Button setzt dieses Feld auf "1".
Im QueryClose fragst Du dieses Feld ab - wenn es "1" ist, dann setzt Du das Status-Item um und speicherst im Backend.

Bernhard

Mirko:
Das leuchtet mir grad nicht ein  ::) Da würde ich doch auch die Änderungen des Users mit speichern
Ich speichere meinen Statuswechsel ja sowieso im Backend. Aber warum werden Änderungen (die der User irrtümlich gemacht hat) gespeichert, obwohl der Speicherdialog mit "Nein" beantwortet wurde  ??? Sollte nicht, wenn ich "workspace.currentdocument.close" aufrufe als nächstes "workspace.currentdocument = nothing" sein ?

Gruß Mirko

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln