Domino 9 und frühere Versionen > ND7: Entwicklung
Felder Validierung
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