Domino 9 und frühere Versionen > ND7: Entwicklung

Felder Validierung

(1/4) > >>

jokky:
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?

koehlerbv:
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
--- Ende Code ---
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

jokky:
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

jokky:
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

koehlerbv:
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
--- Ende Code ---
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

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln