Domino 9 und frühere Versionen > ND7: Entwicklung

Datumsfeld auf gültige Eingabe prüfen

(1/3) > >>

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