Domino 9 und frühere Versionen > ND7: Entwicklung
Datumsfeld auf gültige Eingabe prüfen
Demian:
Moin,moin zusammen,
bei Datumsfeldern wird seitens Notes beim Verlassen des Feldes ja geprüft, ob es sich um eine gültige Datumeingabe handelt. Wird ein ungültiges Datum eingegeben, erscheint beim Verlassen des Feldes der Hinweis "Uhrzeit oder Datum kann nicht interpretiert werden."
Gibt es eine Möglichkeit diese Meldung manuell auszulösen? Ich hatte jetzt das Problem, dass jemand als Datum den 29.02.13 eingegeben, aber direkt speichern gedrückt hat ohne das Feld zu verlassen, natürlich hats geknallt, weil ich in meiner Routine auch nur prüfe ob überhaupt was eingegegen war :o
Ansonsten würde ich halt noch ein IsDate einbauen, wobei es mir besser gefallen würde, wenn hier die "Noteseigene" Prüfung ziehen würde.
Gruß
Demian
koehlerbv:
Wenn das ein Datumsfeld ist, dann kannst Du doch gar nicht speichern, wenn dort "29.2.2013" eingetragen ist ...
Was hast Du da genau gedreht?
Bernhard
Demian:
Interessant, hab jetzt mal ein einer leeren DB ne Maske mit Datumsfeld erstellt. Wenn ich hier den 29.2.13 eingebe und speichern drücke kommt die Meldung auch direkt.
In der betroffenen DB habe ich für die entsprechende Maske jedoch eine Lib für die Maske die die verschiedenen Maskenereignisse ausführt. Hier wird das Querysave ausgeführt, bevor die Meldung mit "Uhrzeit oder Datum kann nicht interpretiert werden." kommt.
Also muss ich dann doch in meinem Querysave mit IsDate arbeiten und ne eigene Meldung einbauen.
Peter Klett:
Kann es sein, dass Du in der Lib das Dokument im Backend speicherst?
Demian:
Nein, gespeichert wird das Dokument nicht separat. Hier mal mein Querysave aus der Lib:
--- Zitat ---Function Car_Querysave(source As NotesUIDocument) As Boolean
'*********************************************************************************************************************************
'save the field values of the current document again to compare them in the _Postsave with values which were saved in
'the _Postopen of this library
'*********************************************************************************************************************************
'Parameters: source = current Car
'*********************************************************************************************************************************
On Error Goto ErrHandle
'*********************************************************************************************************************************
Const EventName = "Car_Querysave" 'for reports
'*********************************************************************************************************************************
'Declarations
'*********************************************************************************************************************************
'verify user input
If Car_VerifyInput(source) = False Then
Call ReportWriteWarning (EventName & " - Felder nicht korrekt ausgefüllt")
'RETURN
Car_QuerySave = False
Exit Function
End If 'Car_VerifyInput(source) = False
Call ReportWrite (EventName & " - Felder korrekt ausgefüllt")
If boolNewSTDoc = False Then
'save new field values for comparing with old field values in the postsave
strCA_ManufacturerNEW = Cstr(source.Document.CarManufacturer(0))
strCA_TypeNEW = Cstr(source.Document.CarType(0))
strCA_VehicleRegistrationNEW = Cstr(source.Document.CarVehicleRegistration(0))
strCA_FineDustBadgeNEW = Cstr(source.Document.CarFineDustBadge(0))
strCA_EmissionInspectionNEW = Cstr(source.Document.CarNextGeneralEmissionInspection(0))
strCA_BGInspectionNEW = Cstr(source.Document.CarNextBGInspection(0))
strCA_PurchaseCharacterNEW = Cstr(source.Document.CarPurchaseCharacter(0))
strCA_ConstructionYearNEW = Cstr(source.Document.CarConstructionYear(0))
strCA_PurchasePriceNEW = Cstr(source.Document.CarPurchasePrice(0))
strCA_LeasingCompanyNEW = Cstr(source.Document.CarLeasingCompany(0))
strCA_ServiceNetNEW = Cstr(source.Document.CarServiceNet(0))
strCA_LeasingNetNEW = Cstr(source.Document.CarLeasingNet(0))
strCA_LeasingThirdNEW = Cstr(source.Document.CarLeasingThird(0))
strCA_TotalGrossNEW = Cstr(source.Document.CarTotalGross(0))
strCA_LeasingEndNEW = Cstr(source.Document.CarLeasingEnd(0))
strCA_DepartmentNEW = Cstr(source.Document.CarDepartment(0))
strCA_CostCenterNEW = Cstr(source.Document.CarCostCenter(0))
strCA_AdvertisingNEW = Cstr(source.Document.CarAdvertising(0))
strCA_LocationNEW = Cstr(source.Document.CarLocation(0))
strCA_RadioNEW = Cstr(source.Document.CarRadio(0))
strCA_ReservationAbleNEW = Cstr(source.Document.CarReservationAble(0))
strCA_FixedEmployeeNEW = Cstr(source.Document.CarFixedEmployee(0))
strCA_MailInfoNEW = Cstr(source.Document.CarMailInfo(0))
Call ReportWrite (EventName & " - Vergleichswerte wurden ausgelesen")
Else
Call ReportWrite (EventName & " - neues Dokument, speichern der Vergleichswerte nicht erforderlich")
End If 'boolNewSTDoc = True
'RETURN
Car_Querysave = True
Leave:
Exit Function
ErrHandle:
Call ReportWriteError(EventName & " - Error" & Str(Err) & ": " & Error$ & " in Zeile " & Erl)
Msgbox "Error" & Str(Err) & ": " & Error$ & " in Zeile " & Erl
'RETURN
Car_Querysave = False
Resume Leave
End Function
--- Ende Zitat ---
In Car_VerifyInput werden nur die relevanten Felder insofern geprüft, ob überhaupt etwas eingetragen ist:
--- Zitat ---If Trim ( source.FieldGetText ( "CarNextBGInspection" ) ) = "" Then
Msgbox "Der Termin für die nächste Bg Prüfung wurde nicht angegeben!",,"DORNHÖFER GmbH"
Call ReportWriteWarning (EventName & " - CarNextBGInspection nicht ausgefüllt")
'RETURN
Car_VerifyInput = False
Exit Function
End If 'Trim(source.FieldGetText("CarNextBGInspection")) = ""
--- Ende Zitat ---
Die Abfrage läfut er normal durch. Laut Debugger enthält die Eigenschaft Text zu dem Zeitpunkt den Wert "ERROR:". Knallen tuts dann im Querysave in der Zeile:
--- Zitat ---strCA_BGInspectionNEW = Cstr(source.Document.CarNextBGInspection(0))
--- Ende Zitat ---
Was ja auch klar ist da value nichts enthält.
Nur warum wird die Meldung unterdrückt? Zum Zeitpunkt der Funktion Car_VerifyInput hats Notes ja schon festgestellt, dass es ein ungültiges Datum ist (Text = "ERROR:").
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln