[Gelöst] Formular einzelne Datensätze überspringen

24. Juni 2010 13:15

Hallo,

ich möchte in einem Formular einzelne Datensätze aus der Tabelle Contact nicht anzeigen.

Und zwar soll bei jedem Datensatz geprüft werden ob die E-Mailadresse gültig ist.
Wenn die E-Mailadresse gültig ist, soll der Datensatz nicht angezeigt werden.
Im Bericht mache ich das mit CurrReport.SKIP
Gibt es irgend eine Möglichkeit das gleiche Ergebnis im Formular zu erzielen, ohne neue Felder in der Tabelle hinzuzufügen?


Gruß
Ralf
Zuletzt geändert von ralf5 am 25. Oktober 2010 12:58, insgesamt 1-mal geändert.

Re: Formular einzelne Datensätze überspringen

24. Juni 2010 14:00

Hallo Ralf,

nur als Idee (ohne Codebeispiel)

Ich würde beim Öffnen der Form die Tabelle "Kontakte" lesen und
dabei prüfen, ob die E-Mailadresse gültig ist.
Wie das geht, weißt Du ja selbst :-)
http://www.msdynamics.de/viewtopic.php?f=17&t=10589

Wenn nicht, den Datensatz markieren und am Ende nur die
satzmarkierten Sätze (die mit den ungültigen Werten) anzeigen.

MfG
Christian

Re: Formular einzelne Datensätze überspringen

24. Juni 2010 16:16

Hallo Christian,

Danke. Mit der Satzmarke funktioniert es. Allerdings dauert es ca. 3 Minuten bis das Formular angezeigt wird.

Hier der Code:
Code:
Form - OnInit()
SETFILTER("E-Mail",'<>''''');
CREATE(RegExp);
RegExp.Pattern('^([\w-]+\.)*?[\w-]+@[\w-]+\.([\w-]+\.)*?[\w]+$');

Form - OnOpenForm()
IF FIND('-') THEN
  REPEAT
       MARK:= NOT RegExp.Test("E-Mail")
  UNTIL NEXT=0;

Form - OnAfterGetRecord()
MARK:= NOT RegExp.Test("E-Mail");
MARKEDONLY:=TRUE;


Ist das so richtig? Kann ich das noch optimieren?

Gruß
Ralf

Re: Formular einzelne Datensätze überspringen

24. Juni 2010 16:45

Du könntest den RegExp-Test zB nicht doppelt durchführen.

Nebenher könnte man das auf einem temporären rec laufen lassen, wobei das aber weniger bringen dürfte.

Sonst könnte man es auch noch so einrichten, dass es ein Kennzeichen gibt, ob die E-Mail-Adresse dem korrekten Format entspricht. Das Kennzeichen müsste man dann einmal auf allen Datensätzen setzen, und danach nur noch beim Ändern/Eingeben der Adresse überprüfen. Dann noch einen Schlüssel auf dieses Kennzeichen, in der Form auf Kennzeichen "Mailadresse korrekt"=Ja filtern - fertig.

Re: Formular einzelne Datensätze überspringen

25. Juni 2010 08:33

ralf5 hat geschrieben:RegExp.Pattern('^([\w-]+\.)*?[\w-]+@[\w-]+\.([\w-]+\.)*?[\w]+$');

Btw: was genau prüft das eigentlich alles?

Re: Formular einzelne Datensätze überspringen

25. Juni 2010 09:30

McClane hat geschrieben:
ralf5 hat geschrieben:RegExp.Pattern('^([\w-]+\.)*?[\w-]+@[\w-]+\.([\w-]+\.)*?[\w]+$');

Btw: was genau prüft das eigentlich alles?


Kurze Erläuterung zu dem verwendeten Muster:
Das erste \w steht für ein beliebiges Wortzeichen (inkl. Unterstrich). Durch das anschließende +-Zeichen wird festgelegt, dass auch mehrere aufeinanderfolgende Wortzeichen zulässig sind. \. bedeutet, dass auf die Wortzeichen ein Punkt folgen muss. Durch Angabe von *? wird festgelegt, dass es sich bei der bisherigen Musterfestlegung um eine optionale Gruppe handelt, sich diese Gruppe jedoch auch wiederholen darf. Das zweite \w bedeutet, dass hier wieder ein Wortzeichen folgen muss. Durch Angabe des nachfolgenden +-Zeichens wird festgelegt, dass sich das Wortzeichen beliebig wiederholen darf, aber mindestens eines vorhanden sein muss, ehe dann durch Angabe von @ das @-Zeichen folgen muss. Der zweite Teil des Musters nach dem @-Zeichen entspricht weitestgehend dem des ersten Teils.

Quelle: http://www.vbarchiv.net/tipps/tipp_1311 ... n-net.html

Gruß
Ralf

Re: Formular einzelne Datensätze überspringen

25. Juni 2010 09:44

Achso, du prüfst nicht wirklich auf eine gültige E-Mail-Adresse, sondern nur, ob sie einem gewissen Format entspricht? Das hättest du doch auch in NAV filtern können, oder übersehe ich etwas?

Re: Formular einzelne Datensätze überspringen

25. Juni 2010 09:56

Wie kann ich das in NAV filtern? :wink:

Re: Formular einzelne Datensätze überspringen

25. Juni 2010 10:02

<>??*@???*.??* oder so ähnlich? Kann natürlich sein, dass er sich dabei an dem Punkt stößt.

Werden durch deine Prüfung auch schon Sonderzeichen und Spaces ausgeschlossen? Verstehe ich das richtig, dass im Teil der Domain sowohl vor als auch nach dem Punkt ein Zeichen sein kann?

Re: Formular einzelne Datensätze überspringen

25. Juni 2010 10:13

McClane hat geschrieben:<>??*@???*.??* oder so ähnlich?

Würde auf jeden Fall dann scheitern, wenn NAV nativ statt auf dem SQL-Server betrieben wird.

Re: Formular einzelne Datensätze überspringen

25. Juni 2010 10:22

McClane hat geschrieben:<>??*@???*.??* oder so ähnlich? Kann natürlich sein, dass er sich dabei an dem Punkt stößt.

Werden durch deine Prüfung auch schon Sonderzeichen und Spaces ausgeschlossen? Verstehe ich das richtig, dass im Teil der Domain sowohl vor als auch nach dem Punkt ein Zeichen sein kann?


Ja, es werden Sonderzeichen und Leerzeichen ausgeschlossen, deshalb bekomme ich das auch nicht über einen NAV Filter hin.

Gruß
Ralf

Re: Formular einzelne Datensätze überspringen

25. Juni 2010 10:25

Natalie hat geschrieben:Würde auf jeden Fall dann scheitern, wenn NAV nativ statt auf dem SQL-Server betrieben wird.

Stimmt, auf SQL sieht`s aber auch nicht viel besser aus :evil: