Autor Thema: Speichern abbrechen bei fehlenden Pflichfeldern  (Gelesen 6767 mal)

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Speichern abbrechen bei fehlenden Pflichfeldern
« am: 10.02.09 - 16:35:50 »
Ich hab heute wohl Tomaten auf den Augen.

Beim Schliessen eines neuen Dokumentes will ich auf Pflichtfelder prüfen, falls leer, soll das Speichern abgebrochen werden.

Für das Überprüfen der Pflichtfelder habe ich eine Funktion Validation geschreiben, die bei fehlenden Feldern 'false' zurückliefert.
Im QuerySave steht als erstes:

if not Validation then
  continue = false
  exit sub
end if

Er speichert dann das Dokument nicht, schliesst es aber zu meinem Ärger kommentarlos. Wie kann ich das verhindern?
 :-:

Die Version ist 8.0.2 auf Windows Vista.


liebe Grüsse

Dau-in





mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Speichern abbrechen bei fehlenden Pflichfeldern
« Antwort #1 am: 10.02.09 - 16:46:07 »
QueryClose bzw "onUnload" (laut Hilfe bevorzugt)?
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Speichern abbrechen bei fehlenden Pflichfeldern
« Antwort #2 am: 10.02.09 - 16:48:16 »
Ist das wirklich alles? Das Prinzip stimmt nämlich ...

Bernhard

PS: Martin - was sollte QueryClose da suchen? Das Continue = False mit anschliessendem Zwangsabbruch des Events führt niemals zum QueryClose ...

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Speichern abbrechen bei fehlenden Pflichfeldern
« Antwort #3 am: 10.02.09 - 16:59:22 »
Ja, aber nachdem das Continue-False nicht greift, hätte ich mich am QueryClose versucht. Da muss er beim Schließen ja auch reinrasseln.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Speichern abbrechen bei fehlenden Pflichfeldern
« Antwort #4 am: 10.02.09 - 17:10:27 »
Da nix gespeichert wird, greift Continue = False. Jede Wette: Da ist noch was anderes.

Bernhard

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Speichern abbrechen bei fehlenden Pflichfeldern
« Antwort #5 am: 10.02.09 - 17:11:13 »
Ich bau das Ganze morgen mal noch im QueryClose ein, vielleicht  hilfts

ähmmmm

wenn ich auf Cancel gehe, dann gehe ich doch noch durch das QueryClose? Oder hab ich das jetzt falsch im Kopf? Dann würde ja auch bei jedem Abbrechen geprüft, das wäre schlecht ...
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Speichern abbrechen bei fehlenden Pflichfeldern
« Antwort #6 am: 10.02.09 - 17:13:54 »
Da nix gespeichert wird, greift Continue = False. Jede Wette: Da ist noch was anderes.

Bernhard

Hast du einen Tip, wo ich suchen kann?

P.S: es ist nicht die bewusste Applikation, und dadurch ist das Ganze total überschaubar, eigentlich sollte bei sowas Trivialem nichts schiefgehen.
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Speichern abbrechen bei fehlenden Pflichfeldern
« Antwort #7 am: 10.02.09 - 17:21:36 »
Was erlebst Du im Debugger?
Was spricht eine Messagebox vor dem Exit Sub nach Continue = False?
Ist das der ganze Code?
Konflikte Client vs. geöffnetem Designer sind ausgeschlossen?

Bernhard

Offline Werner Götz

  • Aktives Mitglied
  • ***
  • Beiträge: 249
  • Geschlecht: Männlich
Re: Speichern abbrechen bei fehlenden Pflichfeldern
« Antwort #8 am: 10.02.09 - 17:25:13 »
Gibt es einen Unterschied zwischen Notes 8 und Notes 7?

In Notes 8 gibt es einen QueryClose-"Bug", s.
http://www-10.lotus.com/ldd/bpmpblog.nsf/dx/queryclose-annoyances

Vielleicht ist das Problem ähnlich zu lösen wie dort beschrieben?

-Werner

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Speichern abbrechen bei fehlenden Pflichfeldern
« Antwort #9 am: 10.02.09 - 17:48:59 »
Werner, das werde ich morgen auf alle Fälle ausprobieren.
Die Installation verlief nämlcih etwas holprig, und evt. ist da das Problem.

Bernhard:
Im Validation selbst werden natürlich die Felder geprüft.
Im QuerySave kommt danach noch Code, aber der wird laut Debugger nicht mehr durchlaufen.
Da ist ja im Prinzip wirklich nichts dran, was schiefgehen könnte.


Grüsse

Dau-in
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Speichern abbrechen bei fehlenden Pflichfeldern
« Antwort #10 am: 10.02.09 - 18:09:25 »
Hallo Werner,

der SPR beschreibt aber doch gerade den Fall, dass QuerySave noch "ordentlich" ('not dirty') ausgeführt wurde und dann das QueryClose in die Hose gehen kann.

Anita möge doch mal bitte die Simpelst-Variante in eine Simpelst-Maske einbauen und nochmals checken. Und wenn das auch schief geht (was mich wundern würde), dann bräuchten wir hier die Simpelst-Variante komplett.

Ich bleibe dabei: Da läuft noch etwas anderes. Hast Du vielleicht irgendwo ein SaveOptions = "0" eingebaut??

Bernhard

Offline Werner Götz

  • Aktives Mitglied
  • ***
  • Beiträge: 249
  • Geschlecht: Männlich
Re: Speichern abbrechen bei fehlenden Pflichfeldern
« Antwort #11 am: 10.02.09 - 18:54:55 »
Hallo Anita,

mit Schließen meinst Du wohl, dass der Anwender Escape drückt.

Wenn der Anwender in einem neuen Dokument keine einzige Eingabe gemacht hat, dann wird der QuerySave auch nicht durchlaufen.

Soll das wirklich verhindert werden?

Dann kannst Du dies im QueryClose erkennen mit
Code
If Source.IsNewDoc And Not Source.ModifiedSinceSaved Then


Hoffe, das hilft weiter ...
-Werner

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Speichern abbrechen bei fehlenden Pflichfeldern
« Antwort #12 am: 10.02.09 - 19:09:38 »
Ah - das ist auch eine Möglichkeit, die Werner da nennt.

Ein Hinweis aber noch dazu: Wenn das "neue" Dokument (auch ohne Speichern) durch eine Aktion im Backend erstellt wurde und dann mit NotesUIWorkspace ins Frontend geholt wird, dann gilt NotesUIDocument.IsNewDoc nicht mehr. Aber dann landest Du trotz NotesUIDocument.ModifiedSinceSaved = False sowieso im QuerySave.

Da es jetzt aber verwirrend wird  ;D, sag' an, ob Werners Hinweis das Rätsel nicht schon aufgelöst hat.

Bernhard

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Speichern abbrechen bei fehlenden Pflichfeldern
« Antwort #13 am: 10.02.09 - 23:02:28 »

Werner, mit 'Schliessen' meine ich Escapetaste oder bei auch den Cancel-Button im Speicherdialog.
Ich hatte vorhin noch den Hinweis von M3 im Kopf mit der Abfrage im QueryClose. Die Validierung soll nur ablaufen, wenn gespeichert werden soll, nicht bei Escap-oder Cancelbutton.

Anita möge doch mal bitte die Simpelst-Variante in eine Simpelst-Maske einbauen und nochmals checken. Und wenn das auch schief geht (was mich wundern würde), dann bräuchten wir hier die Simpelst-Variante komplett.

Für dich tu ich (fast) alles, Bernhard.

Zitat von: koehlerbv

Ich bleibe dabei: Da läuft noch etwas anderes. Hast Du vielleicht irgendwo ein SaveOptions = "0" eingebaut??


Nix SaveOptions.

Morgen probier ich es nochmals aus.

So, gute Nacht!

Dau-in
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Speichern abbrechen bei fehlenden Pflichfeldern
« Antwort #14 am: 10.02.09 - 23:32:28 »
Anita, Du beantwortest Werners eigentliche Frage nicht! Wenn gar nichts eingegeben wird, dann führt bei Einfach-Anwendung Esc sofort zu QueryClose, ohne jemals QuerySave zu berühren. Wie man das abfängt, hat Werner beschrieben.

Das ist derzeit der casus cnactus.

Bernhard

PS: Für das "(fast) alles tun" schlage ich vor, das beim nächsten Treffen (auf irgendeiner Konferenz oder wo wir uns sonst so sehen) entweder ich Dich und meine "Spiessgesellen" einlade (und zahle) und DU die Getränke holst - oder eben vice versa.

PPS: Ich bin nach wie vor der Meinung, dass sich Dein Problem ganz, ganz einfach erklären lassen wird. Werners Ansatz hat schon mal was von "expect the unexpected".

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Speichern abbrechen bei fehlenden Pflichfeldern
« Antwort #15 am: 11.02.09 - 18:41:06 »
Als erstes nochmals zum QueryClose:
Wenn ich in ein bestehendes Dokument etwas eingegeben hatte und dann auf das Kreuzchen gedrückt habe, klappte  das Dokument zu meiner Verblüffung kommentarlos zu, kein Speicherdialog. Wenn ich bzw. der Anwender nichts eingebe, soll auch kein Script ablaufen. Ich war nach dem Hinweis von M3 schon am Überlegen, ob die Validierung da auch noch mal reingehört.


Ich habe heute eine Testmaske testa mit einem Testfeld test1(einfaches Textfeld,
ohne Eingabevalidierung etc.) angelegt.



Code
Function Validation As Boolean

      Dim ws As New Notesuiworkspace
      Dim uidoc As NotesUIDocument
      Dim strPflichtTab1 List As String  'soll dann alle zu prüfenden
                        Felder mit Label aufnehmen



      strPflichtTab1("test1") = "Testfeld"
      Set uidoc= ws.currentDocument
      Validation = true

      Forall v In strPflichtTab1
            Print Cstr(v)
            If uidoc.FieldGetText(Listtag(v)) = "" Then
                  Print Listtag(v)
                  Messagebox "Bitte füllen Sie das Feld " & V & " aus!", 0,
"Eingabefehler"

                  uidoc.GotoField(Listtag(v))
                  Validation = False
            End If
      End Forall
End Function

Code
Sub Querysave(Source As Notesuidocument, Continue As Variant)

      If Validation  Then
             'Historie schreiben
      Else
            continue = False
            Exit Sub
      End If

End Sub


Die Testmaske verhielt sich völlig normal.

Daraufhin habe ich die alte Maske kopiert, und die Maskenkopie arbeitet genauso wie erwartet. Die ursprüngliche Maske schliesst sich weiterhin. Da muss also irgendwas im Designelement gehakt haben.  :-:

Grüsse

Dau-in




mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Speichern abbrechen bei fehlenden Pflichfeldern
« Antwort #16 am: 11.02.09 - 23:39:25 »
Sag ich doch - da war noch "etwas anderes". Gerade, wenn Datenbanken sehr alt werden (und sich immer noch designmässig verändern), sollte man diesen ab und etwas "Pflege" angedeien lassen  ;)

Bernhard

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Speichern abbrechen bei fehlenden Pflichfeldern
« Antwort #17 am: 12.02.09 - 08:04:51 »
Gerade, wenn Datenbanken sehr alt werden (und sich immer noch designmässig verändern), sollte man diesen ab und etwas "Pflege" angedeien lassen  ;)

diese DB hat 5 Tage auf dem Buckel. Und auch nicht viel Code/Kot drin.  ;D
Da zieht dieses Argument nicht wirklich.
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz