Autor Thema: Eingabevalidierung 8.5x  (Gelesen 12470 mal)

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Eingabevalidierung 8.5x
« am: 16.11.11 - 23:10:54 »
Hallo,

kann es sein, dass die Eingabevalidierung jetzt nicht mehr so wie früher funktioniert?
Abgesehen davon, dass früher sowieso alles besser war... ;)

Egal, ob ich FS oder LS benutze, werden die Änderungen per STRG-S im Dokument trotzdem gespeichert...  :-:

Es kommt zwar eine oder andere Validierung-Meldung, ich kann danach beim Dokument-Schließen die Anfrage "Speichern?" verneinen, aber die Änderungen sind drin und beim neuen Öffnen des Dokuments zu sehen.
 :'(

Gruß
Leo
nobody is perfect but i'm pretty close 

Offline WildVirus

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 658
  • Geschlecht: Männlich
Re: Eingabevalidierung 8.5x
« Antwort #1 am: 16.11.11 - 23:48:17 »
Also sowohl die alten als auch neu erstelle funktionieren wie gehabt.

Poste mal den Code, der nicht so läuft wie er soll

CU,
Axel

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Eingabevalidierung 8.5x
« Antwort #2 am: 17.11.11 - 00:13:52 »
Leo, auch wenn ich dir zustimme, dass die Versionen 8.x nicht in jedem Punkt einen Gewinn darstellen: Die Eingabevalidierungen funktionieren weiter wie gehabt (ausser, dass in LS dadurch Fehlermeldungen provoziert werden können, die nur Gaga sind ("Got string, but expected: EMPTY", aber das Teil hatte in Wirklichkeit den Bezug um NotesUIDocument verloren, und ähnliches).

Ich stimme daher Axel vollkommen zu: Mehr zum Background, und wir können sicherlich helfen und es wird sich vermutlich herausstellen: Das war kein Version 8.x-Problem.

Bernhard

PS: Ich kann berichten, dass mindestens 99% der Anwendungen aus Zeiten von R5 bis R7 völlig unverändert auch mit R8.x - Basic wie Standard - unverändert weiterlaufen ohne jedes Problem.

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Eingabevalidierung 8.5x
« Antwort #3 am: 17.11.11 - 17:20:45 »
Hallo Axel, hallo Bernhard,

vielen Dank für die schnellen Antworten!

Ich habe zum Testen eine kleine neue Maske und eine Ansicht erstellt, funktioniert alles wirklich wie gehabt.

Was meinen Code betrifft, würde er den Platz auf diesem Server sprengen... :)

Es geht um eine Datenbank, die vor etwa 6 Jahren mal schnell entwickelt wurde und dann bis heute so etwa alle zwei bis drei Monate mal schnell erweitert wurde, so dass die Maske inzwischen mehr als 100 Felder hat, die zumindest zum Teil miteinander verbunden sind, und keiner den Überblick hat, und beim Speichern der Maske noch verschiedene Agenten unter Umständen aufgerufen werden...

Im Moment handelt es sich um die zwei alten Felder, die jetzt validiert werden müssen.
Im einfachsten Falle z.B. so:

T1Failed :="Bitte eine passende Kategorie auswählen oder die Ihnen fehlende ins Feld 'nicht in Liste' eintragen";
@If( Categories = "-nicht in Liste-" & CategoriesW = ""  & @GetProfileField("pData";"wModus") != "Ja" ; T1Failed; @Success )

Funktioniert leider nicht.
Auch mit @Failure(T1Failed) nicht.
Auch mit @IsDocBeingSaved nicht.
Die Meldung bei STRG-S kommt, die Werte werden aber trotzdem gespeichert.

Es laufen allerding verschiedene Validierungengen und Berechnungen auch in anderen Feldern.
Es gibt noch ein paar versteckte Felder, wo mehrere Validierungen (für mehrere Felder) nach einander laufen.
Und es gibt noch Validierungen in der (SEHR langen) QuerySave der Maske.

Allerdings fast alles auf FS basiert.

Ich hab schon überlegt, ob ich QuerySave auf LS umschreibe, wer gibt mir aber die Zeit dazu...  ::)

Vielleich hatte schon jemand ein ähnliches Problem?
Oder kennt einen Tipp zum Thema, was z.B. die Anzahl oder die Reihenfolge der möglichen Validierungen betrifft?...

Gruß
Leo
« Letzte Änderung: 17.11.11 - 17:46:52 von Bruce Willis »
nobody is perfect but i'm pretty close 

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Eingabevalidierung 8.5x
« Antwort #4 am: 17.11.11 - 17:29:34 »
Das kann auch gar nicht funktionieren, da in Deinem Konstrukt ein @Failure fehlt. Vulgo: Es gibt keine Abbruchbedingung.

Und das war auch schon in früheren Versionen so.

Bernhard

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Eingabevalidierung 8.5x
« Antwort #5 am: 17.11.11 - 17:38:09 »
Das kann auch gar nicht funktionieren, da in Deinem Konstrukt ein @Failure fehlt.

Bernhard
Sorry, oben ist die Version aus dem versteckten Validierung-Feld für mehrere Bedingungen.
Für ein einzelnens Feld ist natürlich so:

@If( Categories = "-nicht in Liste-" & CategoriesW = "" & @IsDocBeingSaved & @GetProfileField("pData";"wModus") != "Ja" ; @Failure(T1Failed); @Success )

Funktioniert aber nicht...

Gruß
Leo
nobody is perfect but i'm pretty close 

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Eingabevalidierung 8.5x
« Antwort #6 am: 17.11.11 - 17:41:43 »
Das o.g. Feld für mehrere Validierungen heißt Valid1.
Es gibt noch Valid2.
In dem dritten steht:

@If(
@GetProfileField("pData";"wModus") = "Ja" ; @Success ;
Valid1 != "" & @IsDocBeingSaved ; @Failure(Valid1);
Valid2 != "" & @IsDocBeingSaved ; @Failure(Valid2);
@Success)
nobody is perfect but i'm pretty close 

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Eingabevalidierung 8.5x
« Antwort #7 am: 17.11.11 - 17:50:47 »
Da ich schon seit Jahren nicht mehr auf diese Weise validiert habe, bin ich mir nicht ganz sicher, aber ...

Ist es nicht unsinnig, in einer Validierungsformel @IsDocBeingSaved abzufragen, diese Formel läuft doch nur, wenn das Dokument gespeichert werden soll. Probier' es mal ohne. Oder steht die Formel nicht in der Eingabevalidierung?

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Eingabevalidierung 8.5x
« Antwort #8 am: 17.11.11 - 17:57:10 »
Da ich schon seit Jahren nicht mehr auf diese Weise validiert habe...

Sondern?

Etwa so?

   If source.FieldGetText( "Valid1" ) <> "" Then
      Messagebox( "bla-bla-bla" & " " & source.FieldGetText( "Valid1" ) )
      Call source.GotoField( "Body" )
      continue = False
      Exit Sub
   End If

Gruß
Leo
« Letzte Änderung: 17.11.11 - 18:00:44 von Bruce Willis »
nobody is perfect but i'm pretty close 

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Eingabevalidierung 8.5x
« Antwort #9 am: 17.11.11 - 17:59:53 »
Per Script im Querysave, mittels globaler Variablen in einer Scriptbibliothek auch übergreifend über unterschiedliche Teilmasken. Als Ergebnis bekomme ich EINE Fehlermeldung ALLER fehlenden Eingaben aus der Maske und allen eingebundenen Teilmasken.

Die letzte Teilmaske stoppt dann ggf. mit Continue = False

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Eingabevalidierung 8.5x
« Antwort #10 am: 17.11.11 - 18:00:15 »
Peter, die Eingabevalidierung läuft bei jedem Recalc. Also: F9 reicht.

Bernhard

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Eingabevalidierung 8.5x
« Antwort #11 am: 17.11.11 - 18:01:58 »
Peter, die Eingabevalidierung läuft bei jedem Recalc. Also: F9 reicht.
Ok, dann ist ein @IsDocBeingSaved angebracht. Ich sag, ja, keine Ahnung ...

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Eingabevalidierung 8.5x
« Antwort #12 am: 17.11.11 - 18:06:46 »
Etwa so?

   If source.FieldGetText( "Valid1" ) <> "" Then
      Messagebox( "bla-bla-bla" & " " & source.FieldGetText( "Valid1" ) )
      Call source.GotoField( "Body" )
      continue = False
      Exit Sub
   End If

Gruß
Leo
Ja, in etwa. Nur dass ich alle Fehlermeldungen in einer Scriptvariablen mittels einer eigenen Funktion sammele.

Im Querysave sieht das dann etwa so aus

If doc.Feld (0) = "" Then
   Call Validierung ("Feld ist nicht gefüllt")
End If

Validierung baut dann einen Fehlerstring auf. Die letzte Teilmaske überprüft dann den Fehlertext etwa so

If fehlertext <> "" Then
   msgbox fehlertext, 16, "Fehler"
   fehlertext = ""
   Continue = False
End If

Dazu brauche ich natürlich in jeder Maske die gleiche Teilmaske als letzte. Neudeutsch würde man das wohl Framework nennen.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Eingabevalidierung 8.5x
« Antwort #13 am: 17.11.11 - 18:08:17 »
Auch angesichts der geschilderten kruden Programmierung vermute ich eh mal eher, dass irgendwo ein NotesDocument.Save an einer ganz anderen Stelle läuft. Und dann kann @Failure meckern wie es will - der Fisch ist längst geputzt.

Bernhard

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Eingabevalidierung 8.5x
« Antwort #14 am: 17.11.11 - 18:21:58 »
irgendwo ein NotesDocument.Save an einer ganz anderen Stelle läuft. Und dann kann @Failure meckern wie es will - der Fisch ist längst geputzt.

Bernhard

Ooooo!
Das ist eine sehr gute Idee!!!
Einige der Agenten (und Felder) haben doc.Save drin!
Ich schaue mal....

Wieder was gelernt.

Das übrigens auch: http://synonyme.woxikon.de/synonyme/krude.php
:)

DANKE an alle !

Gruß
Leo

« Letzte Änderung: 17.11.11 - 18:26:42 von Bruce Willis »
nobody is perfect but i'm pretty close 

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Eingabevalidierung 8.5x
« Antwort #15 am: 17.11.11 - 18:26:49 »
Leo, ich würde "krude" mit "schräg, merkwürdig, bizarr" etc. "thesaurisieren". Die in Deinem Link geschilderten Synonyme kenne ich in diesem Zusammenhang überhaupt nicht.

Beispiel: "Er erzählte eine krude Geschichte."
Bedeutung: Er hat etwas erzählt, was wenig zusammenhängend, kaum vorstellbar und kaum zu glauben war."

Bernhard

PS: Folge Peters berechtigten Rat - pack Deine Validierungen an eine einzige Stelle, sonst hat Du sehr kruden Code  ;)

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Eingabevalidierung 8.5x
« Antwort #16 am: 17.11.11 - 19:15:57 »
Folge Peters berechtigten Rat


oder berechtigteM ?
 ;)

Nochmals Danke, Bernhard!

Gruß
Leo
nobody is perfect but i'm pretty close 

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Eingabevalidierung 8.5x
« Antwort #17 am: 18.11.11 - 00:14:09 »
"berechtigtem" natürlich. Da hatte mein Finger wohl einen unberechtigten Linksdrall.

Danke, Leo. Konnte ich Dir bezüglich des Wortes "krude" weiterhelfen?

Bernhard

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Eingabevalidierung 8.5x
« Antwort #18 am: 18.11.11 - 00:18:41 »
Konnte ich Dir bezüglich des Wortes "krude" weiterhelfen?

Ja, klar.
Sehr anschaulich. :D
Danke, Bernhard!

Gruß
Leo
nobody is perfect but i'm pretty close 

Offline Christian Kröll

  • Aktives Mitglied
  • ***
  • Beiträge: 197
  • Geschlecht: Männlich
Re: Eingabevalidierung 8.5x
« Antwort #19 am: 18.11.11 - 09:52:32 »
krude bedeutet aber nicht "schräg, bizarr", sorry Bernhard. http://de.pons.eu/latein-deutsch/crudus

also roh, ungeschlacht, grausam. "grausam" passt ja auch auf so manchen Code - sicher so manche meiner Schnellschüsse.
Bei krudem Code oder Geschichten meint man meist die Ausführung, weniger den Inhalt. Im Sinne von ungeschliffen.
Christian Kröll

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz