Autor Thema: Felder Validierung  (Gelesen 4131 mal)

Offline jokky

  • Frischling
  • *
  • Beiträge: 20
Felder Validierung
« am: 14.12.08 - 14:37:50 »
habe eine Maske gebaut, mit zwei felder, die Zwei felder mussen  mit zwei IDS befüllt werden, validierungsscript ist auch schon geschrieben, habe alles in der Scriptbibliotheke reingestelt.
Meine Probleme ist: ich kann der Script nicht in der Validierungsfomel reinschreiben, hier passt nur nur Formel Sprache, andere Seite habe versucht Komplette Script in der Querysave einzufügen, ghet auch nicht.

QuerySave VertragID (1 Feld):

Sub Querysave(Source As Notesuidocument, Continue As Variant)
   If Not   checkUniqueID(source.document.MandantenID(0)) Then
      Msgbox "MandantenID stimmt nicht", 16, "Feld überprüfen"
      continue = False
      Exit Sub
   End If
   
End Sub



(Options)
Use "IDLib"
Option Declare



QuerySave VdDetails:

If Not   checkUniqueID(source.document.MandantenID(0)) Or checkUniqueID(source.document.MandantenID(0)) Then
      Msgbox "MandantenID oder VertragID stimmt nicht", 16, "Feld überprüfen"
      continue = False
      
      Exit Sub
   End If

kann jemand mir helfen?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Felder Validierung
« Antwort #1 am: 14.12.08 - 14:52:36 »
Was heisst "geht nicht"??
Wie sieht checkUniqueID aus?
Warum wird hier
Code
If Not   checkUniqueID(source.document.MandantenID(0)) Or checkUniqueID(source.document.MandantenID(0)) Then
zweimal das gleiche Item geprüft - einmal aber auf True, einmal auf False? Das macht die ganze Abfrage obsolet, da eine Bedingung immer zutrifft!

Hast Du auch einen richtigen Namen?

Bernhard

Offline jokky

  • Frischling
  • *
  • Beiträge: 20
Re: Felder Validierung
« Antwort #2 am: 14.12.08 - 15:45:27 »
Was heisst "geht nicht"??  wenn man die Maske velässt bekomme ich immer Fehlermeldung "MandantenID stimmt nicht", 16, "Feld überprüfen" wenn es auch nicht in der Felder nicht eingetragen ist.

Wie sieht checkUniqueID aus? Sieht so aus:

Public Function checkUniqueBISID(uniqueBISID) As Boolean
   If Isnull(uniqueBISID)  Then Exit  Function
   If Len(uniqueBISID) < 8 Then Exit Function
   checkUniqueBISID = (CRC32(Left(uniqueBISID, Len(uniqueBISID) - 5)) = Val(Right(uniqueBISID, 5)))
   
End Function

Warum wird hier
Code:

If Not   checkUniqueID(source.document.MandantenID(0)) Or checkUniqueID(source.document.MandantenID(0)) Then

zweimal das gleiche Item geprüft - einmal aber auf True, einmal auf False? Das macht die ganze Abfrage obsolet, da eine Bedingung immer zutrifft!:

es sind zwei Felder die müssen geprüft werden ob die Richtig  sind ?

Hast Du auch einen richtigen Namen? ich heisse Karim

Danke für die Schnell Antwort


Offline jokky

  • Frischling
  • *
  • Beiträge: 20
Re: Felder Validierung
« Antwort #3 am: 14.12.08 - 15:47:08 »
Habe was vergessen, die CRC32 Function sieht so aus

Function CRC32(Str2 As  String) As Long
   
   If Isnull(Str2) Then
      CRC32 = -1
      Exit Function
   End If
   
   Dim i As Long
   Dim j As Long
   Dim nPowers(0 To 7) As Integer
   Dim nCRC As Long
   Dim nByte As Integer
   Dim nBit As Boolean
   
   For i = 0 To 7
      nPowers(i) = 2 ^ i
   Next
   
   For i = 1 To Len(Str2)
      nByte = Asc(Mid$(Str2, i, 1))
      For j = 7 To 0 Step -1
         nBit = Cbool((nCRC And 32768) = 32768) Xor ((nByte And nPowers(j)) = nPowers(j))
         nCRC = (nCRC And 32767&) * 2&
         If nBit Then
            nCRC = nCRC Xor &H8005&
         End If
      Next
   Next
   CRC32 = nCRC
End Function

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Felder Validierung
« Antwort #4 am: 14.12.08 - 16:01:16 »
Hallo Karim,

Du solltest in Deinem checkUniqueBISID auch einen Rückgabewert explizit vergeben.
Isnull setzt Du vollkommen falsch ein - Isnull macht etwas ganz anderes als Du willst und hat da nichts zu suchen.

Die Zeile
Code
If Not   checkUniqueID(source.document.MandantenID(0)) Or checkUniqueID(source.document.MandantenID(0)) Then
hast Du immer noch nicht erklärt:
- Falscher Funktionsname, den Du aufrufst
- Und verbal heisst das Konstrukt: Wenn NICHT oder DOCH dann ... Egal, was checkUniqueID zurückgibt, Du bekommst hier immer ein WAHR zurück.

Bernhard


Offline jokky

  • Frischling
  • *
  • Beiträge: 20
Re: Felder Validierung
« Antwort #5 am: 14.12.08 - 16:07:13 »
Hallo Bernhard:
ich danke dir vielmals für deine Schnelle Antwort:

Falscher Funktionsname, den Du aufrufst :stimmt schon die Function. habe ich bemerkt es war tippfehler.

- Und verbal heisst das Konstrukt: Wenn NICHT oder DOCH dann ... Egal, was checkUniqueID zurückgibt, Du bekommst hier immer ein WAHR zurück.:


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Felder Validierung
« Antwort #6 am: 14.12.08 - 16:22:11 »
Falscher Funktionsname, den Du aufrufst :stimmt schon die Function. habe ich bemerkt es war tippfehler.
Dann solltest Du dringend
Option Declare
einschalten.

- Und verbal heisst das Konstrukt: Wenn NICHT oder DOCH dann ... Egal, was checkUniqueID zurückgibt, Du bekommst hier immer ein WAHR zurück.:
Das habe ich geschrieben. Und was willst Du mit diesem Zitat sagen (bitte benutze hierzu auch die Zitierfunktion)??

Bernhard

Offline jokky

  • Frischling
  • *
  • Beiträge: 20
Re: Felder Validierung
« Antwort #7 am: 14.12.08 - 16:25:51 »
Option Declare
einschalten.

habe ich getan.

meine Problem wo soll ich der Script  hinstellen: in querysave geht nicht , in Validierungsformel geht auch nicht .

hast du einen Rat . Vorschlag danke dir  ür deiner Bemühungen

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Felder Validierung
« Antwort #8 am: 14.12.08 - 16:34:07 »
Sollte der Code dann mal funktionieren, wäre er geschrieben für das QuerySave Event.

Hier wiederum die Frage: Was heisst 'Geht nicht'??

Prinzipiell: Gerade jemand, dessen Muttersprache nicht Deutsch ist, braucht sich keine grosse Gedanken machen, wenn sich dann Fehler in Rechtchreibung und Grammatik einschleichen. Wir haben dann kein Problem damit.
Aber sinnvolle Texte, das Einhalten der Logik also und vollständige Informationen sind unbedingt nötig.

Bernhard

Offline jokky

  • Frischling
  • *
  • Beiträge: 20
Re: Felder Validierung
« Antwort #9 am: 14.12.08 - 16:47:26 »
Hallo Bernhard,
ich weiss nicht was du damit meinst, aber  es ist nicht schlimm.

das Problem ist : in Querysave passt der Script nicht rein .
- kann man der Script in Formel schreiben ?

Also: die Beiden Felder, wo dieser Validierungscript zugreift  befinden sich in einer Maske mit mehreren felder und checkboxen, bevor MandantId und VertragId eingbaut sind , hat alles einwandfrei funktioniert.

Nachdem ich  die Beiden Felder eingebaut habe, und der Script in Querysave eingebunden habe, kann die Maske nicht speichern egal ob die Felder befüllt sind oder nicht.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Felder Validierung
« Antwort #10 am: 14.12.08 - 16:59:00 »
Du beantwortest meine Fragen nicht, und damit bin ich jetzt erstmal 'raus aus der Nummer.

Bernhard

Offline jokky

  • Frischling
  • *
  • Beiträge: 20
Re: Felder Validierung
« Antwort #11 am: 14.12.08 - 17:24:05 »
ich habe doch jeder Frage beantwortet:

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Felder Validierung
« Antwort #12 am: 14.12.08 - 18:38:27 »
das Problem ist : in Querysave passt der Script nicht rein .

Warum?

If Not   checkUniqueID(source.document.MandantenID(0)) Or checkUniqueID(source.document.MandantenID(0)) Then

zweimal das gleiche Item geprüft - einmal aber auf True, einmal auf False? Das macht die ganze Abfrage obsolet, da eine Bedingung immer zutrifft!:

es sind zwei Felder die müssen geprüft werden ob die Richtig  sind ?

Du prüfst hier eindeutig zweimal das gleiche Feld. Da kann nichts vernüftiges rauskommen.

Auf viele Fehler und Ungereimtheiten hat dich Bernhard schon hingewiesen. Hast du diese Hinweise umgesetzt? Wie sieht denn dein aktueller Code aus?

Axel
 


Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Felder Validierung
« Antwort #13 am: 14.12.08 - 23:02:30 »
Danke, Axel  ;)

Bernhard

Offline jokky

  • Frischling
  • *
  • Beiträge: 20
Re: Felder Validierung
« Antwort #14 am: 15.12.08 - 08:25:47 »
Danke Axel,
ich habe die Anweisung von Bernhard befolgt, er hat auch viel zeit und Geduld mit mir gehabt , vielen Danke Bernhard.
ich prüfe nicht zweimal auf das gleich Feld, wie ich oben geschrieben habe , es war tippfehler :

If Not   checkUniqueID(source.document.MandantenID(0)) Or checkUniqueID(source.document.VertragID(0)) es sind zwei verschiedene Felder, die müssen geprüft werden. Script habe oben angehängt.

zurück auf die Frage von Bernhard, der Script ist nicht für Querysave geschrieben, ich habe mir gedacht , wenn die Makse geschlossen ist dann soll auch die beiden Felder geprüft werden, leider funktioniert nicht.


Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Felder Validierung
« Antwort #15 am: 15.12.08 - 08:38:04 »
Wenn dein Code noch so aussieht wie oben, dann kann das nicht funktionieren.

Die Funktion checkUniqueBISID liefert keinen vernüftigen Rückgabewert.

Vom Ansatz her sieht der Code im QuerySave-Event in deinem ersten Post mal ganz vernüftig aus.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline jokky

  • Frischling
  • *
  • Beiträge: 20
Re: Felder Validierung
« Antwort #16 am: 15.12.08 - 08:49:04 »
Deiner Meinung nach wie soll die function checkUniqueBISID aussiehen.
Vom Ansatz her sieht der Code im QuerySave-Event in deinem ersten Post mal ganz vernüftig aus..
kannst du oder hast eine Idee wie man der script in formel umsetzen kann, weil in Querysave ider der Script nicht geeignet, zumindest funktioniert er nicht .

Danke Axel. Seitdem ich ich in diesem Forum gemeldet bin, finde ich immer Hilfe, LOB von mir 

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Felder Validierung
« Antwort #17 am: 15.12.08 - 09:02:56 »
So mal auf die Schnelle:

Public Function checkUniqueBISID(uniqueBISID) As Boolean

   If uniqueBISID = "" Then
      checkUniqueBISID = False
      Exit Function
   End If
 
   If Len(uniqueBISID) < 8 Then
      checkUniqueBISID = False
      Exit Function
   End If

   If CRC32(Left(uniqueBISID, Len(uniqueBISID) - 5)) = Val(Right(uniqueBISID, 5)) Then checkUniqueBISID = True
   
End Function

Bei CRC32 bin ich mir nicht ganz sicher, da ich nicht unbedingt nachvollziehen kann, was diese Funktion bewirken soll.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline jokky

  • Frischling
  • *
  • Beiträge: 20
Re: Felder Validierung
« Antwort #18 am: 15.12.08 - 10:32:57 »
Hallo Axel,

ich danke dir viel mals, ich sag dir bescheid , solang ich der Script eingesetzt habe.

vielen vielen Danke .

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz