Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Cobi am 18.07.07 - 11:14:48

Titel: Trotz Abbrechen wird gespeichert
Beitrag von: Cobi am 18.07.07 - 11:14:48
Hallo zusammen,

ich habe folgenden Code im QuerySave.
Sub Querysave(Source As Notesuidocument, Continue As Variant)
   
   Dim ws As New NotesUIWorkspace
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim uiDoc As NotesUIDocument
   Dim doc As NotesDocument
   Dim i As Integer
   Dim s As String
   
   Set doc = Source.Document
   Set uiDoc = ws.CurrentDocument   
   
   'Eingabevalidierung per Script abhängig vom feld typ
   s = source.FieldGetText("banf_nr")

If Isnumeric(s) Then
      continue=True
   Else
      Messagebox("Es sind keine Zeichen im Feld zugelassen!")
      Call Source.GotoField("banf_nr")
      Continue = False
   
   If source.FieldGetText("typ")="Bestellanforderung" Then      
      
      If Len(s)<>10 Then
         Messagebox("Bitte geben Sie die korrekte 10 stellige Bestellanforderungsnummer ein!")
         Call Source.GotoField("banf_nr")
         Continue = False
      Else
         Call doc.Save(True, False)
      End If
      
   Else
      If (Len(s) < 9) Or (Len(s) >10)  Then
         Messagebox("Bitte geben Sie die korrekte 9 oder 10 stellige Bestellnummer ein!")
         Call Source.GotoField("banf_nr")
         Continue = False
      Else
         Call doc.Save(True, False)
      End If   
   End If
End if
End Sub

Dies funktioniert auch wirklich wunderbar. Allerdings, wenn ich jetzt eine Eingabe mache bsp. 123456789m dann speichern drücke, dann kommt die Fehlermeldung- soweit ok. Sobald ich allerdings anschließend auf Abbrechen gehe, dann wird das Dokument gespeichert und erscheint in der Ansicht.

Warum? Und wie kann ich das verhindern?
Danke und grüße
Tanja
Titel: Re: Trotz Abbrechen wird gespeichert
Beitrag von: koehlerbv am 18.07.07 - 11:26:47
Wenn im Feld "typ" "Bestellanforderung" steht, führst Du das doc.Save aus - Notes tut also, was Du ihm sagst.
Sowas kann man auch im Debugger schön selbst verfolgen.

Bernhard
Titel: Re: Trotz Abbrechen wird gespeichert
Beitrag von: Cobi am 18.07.07 - 11:31:28
Aber ich habe doch am anfang schon die Abfrage, dass wenn ein Zeichen enthalten ist, dass dann abgebrochen werden soll.
If Isnumeric(s) Then
      continue=True
   Else
      Messagebox("Es sind keine Zeichen im Feld zugelassen!")
      Call Source.GotoField("banf_nr")
      Continue = False

Oder erreiche ich das damit nicht?
Titel: Re: Trotz Abbrechen wird gespeichert
Beitrag von: koehlerbv am 18.07.07 - 11:37:20
Dann läuft der Code weiter - Nach dem Continue = False wird das
If source.FieldGetText("typ")="Bestellanforderung" Then
ausgeführt.

Hinter dem Continue = False muss also QuerySave verlassen werden mit Exit Sub.

Bernhard
Titel: Re: Trotz Abbrechen wird gespeichert
Beitrag von: Thomas Schulte am 18.07.07 - 11:37:58
Mist Bernhard war schneller.
 :'(
Titel: Re: Trotz Abbrechen wird gespeichert
Beitrag von: Cobi am 18.07.07 - 11:42:11
ahh super danke! Jetzt funktionierts.

Allerdings schließt er das Fenster jetzt, wenn ich zum Beispiel nur 4 Zeichen eingebe...
Irgendwie muss ich das anders verschachteln. Werde mal ein wenig tüffteln...
Titel: Re: Trotz Abbrechen wird gespeichert
Beitrag von: Thomas Schulte am 18.07.07 - 12:30:00
Ist irgendwie logisch das er das so macht. Dein erste Prüfung ist auf Isnumeric und wenn deine Eingabe nicht Numeric ist machst du erst die Längenprüfungen.
Titel: Re: Trotz Abbrechen wird gespeichert
Beitrag von: Cobi am 18.07.07 - 13:24:47
Zur Vollständigkeithalber hier der korrekte Code:

s = source.FieldGetText("banf_nr")
if not isnumeric(s) then
  msgBox("Es sind keine Zeichen im Feld zugelassen!")
  continue=false
  else
    if source.getfieldtext("typ")="Bestellanforderung" then
      If Len(s)<>10 Then
            Messagebox("Bitte geben Sie die korrekte 10 stellige Bestellanforderungsnummer ein!")
            Call Source.GotoField("banf_nr")
            Continue = False
            else
        Call doc.Save(True, False)
      End If
     Else
        If (Len(s) < 9) Or (Len(s) >10)  Then
            Messagebox("Bitte geben Sie die korrekte 9 oder 10 stellige Bestellnummer ein!")
            Call Source.GotoField("banf_nr")
            Continue = False
         Else
            Call doc.Save(True, False)
            End if
    End If   
End if
            

danke fürs auf die Sprünge helfen.
Titel: Re: Trotz Abbrechen wird gespeichert
Beitrag von: klaussal am 18.07.07 - 13:31:26
Zitat
Bestellanforderungsnummer
?

oder

Zitat
Bestellnummer
  ?
Titel: Re: Trotz Abbrechen wird gespeichert
Beitrag von: Cobi am 18.07.07 - 13:33:08
je nach dem welcher Typ (in einem Dialogfeld ausgewählt ist. Bei Bestellanforderungsnummer muss die Eingabe 10stellig sein.
Bei Bestellnummer 9 oder 10 stellig.
Titel: Re: Trotz Abbrechen wird gespeichert
Beitrag von: klaussal am 18.07.07 - 13:34:00
OK.
Titel: Re: Trotz Abbrechen wird gespeichert
Beitrag von: koehlerbv am 18.07.07 - 13:34:28
Das NotesDocument.Save in einem QuerySave-Event erschliesst sich mir auch nicht.

Die unterschiedlichen Begriffe in der Fehlermeldung sind wohl korrekt, da es sich lt. dem Feld "typ" um unterschiedliche Zusammenhänge handelt, Klaus.

Bernhard
Titel: Re: Trotz Abbrechen wird gespeichert
Beitrag von: Thomas Schulte am 18.07.07 - 14:47:27
Wie Bernhard schon gesagt hat. Der Save ist an dieser Stelle ziemlich sinnlos, weil das Dokument ja ohnehin gespeichert wird.
Titel: Re: Trotz Abbrechen wird gespeichert
Beitrag von: Cobi am 18.07.07 - 15:10:21
Wie Bernhard schon gesagt hat. Der Save ist an dieser Stelle ziemlich sinnlos, weil das Dokument ja ohnehin gespeichert wird.

Aber schaden tut es ja nicht oder kann es zu konflikten kommen?
Titel: Re: Trotz Abbrechen wird gespeichert
Beitrag von: Tode am 20.07.07 - 09:46:38
Dieses Save ist SINNLOS....

Ob es an der Stelle schadet oder nicht ist deshalb völlig irrelevant...

Manchmal führt ein solches Save aber zu der Meldung "Versuch verschachtelter Ereignisse..." (oder so ähnlich).
Un dich könnte mir durchaus Situationen vorstellen, wo das dann zu Replikations- Konflikten führt.

Ich sehe immer wieder, dass manche Entwickler jede "historisch gewachsene" Zeile Code in Ihrem Script lassen, egal wie sinnvoll oder sinnlos, nur aus "sentimentalen" Gründen. Code ohne Funktion gehört gelöscht (es sei denn man braucht es später wieder, das ist aber bei diesem Save definitiv NIE der Fall)

Gruß
Tode