DialogForm DateTime Variable

cRM 12.004, Large6

Hallo,
Ich habe große Schwierigkeiten mit einer DateTime-Variable, die ich in einen selbstgebastelten Dialog:

 	Dim sInputDT1 : sInputDT1 = "20240324185500"
	Dim sInputDT2 : sInputDT2 = "20240324185500"
	Dim sInputDT3 : sInputDT3 = ""
	Dim sInputD4 : sInputD4 = "20250116"   ' Kontrolle: Datentyp Date


	Dim oDlgObj
	Set oDlgObj = cRM.DialogForm
	WScript.ConnectObject oDlgObj,"DIALOG_"
	oDlgObj.DialogTitle = "DateTime Test"
	oDlgObj.IconPath = "%APPDIR%\cRM.exe"
	oDlgObj.DLIPath = "%PRJDIR%\TestDateTime.dli"

	oDlgObj.Sizable = False
	oDlgObj.SizeToContent = True
	
	oDlgObj.DefineVariableStart
	oDlgObj.DefineVariable "LogDate1", 0, "T", 0, 0, sInputDT1  ' 5. Parameter > 0 ändert nichts am Verhalten
	oDlgObj.DefineVariable "LogDate2", 0, "T", 0, 0, sInputDT2 ' **4. Parameter >0 löst das Problem**
	oDlgObj.DefineVariable "LogDate3", 0, "T", 0, 0, sInputDT3 
	oDlgObj.DefineVariable "LogDate4", 0, "D", 0, 0, sInputD4 

	oDlgObj.DefineFctStart
	oDlgObj.DefineFct "OK", "Bestätigen", True, False, vbOK

	oDlgObj.Show
	
	Dim sResultDT1
	Dim sResultDT2
	Dim sResultDT3
	Dim sResultD4

	oDlgObj.GetVariableContentsVariant "LogDate1", sResultDT1
	oDlgObj.GetVariableContentsVariant "LogDate2", sResultDT2
	oDlgObj.GetVariableContentsVariant "LogDate3", sResultDT3
	oDlgObj.GetVariableContentsVariant "LogDate4", sResultD4

	Dim sOutput 
	sOutput = "sResultDT1: " & TypeName(sResultDT1) & " " & sResultDT1 & vbCrlf & _
			  "sResultDT2: " & TypeName(sResultDT2) & " " & sResultDT2 & vbCrlf & _
			  "sResultDT3: " & TypeName(sResultDT3) & " " & sResultDT3 & vbCrlf & _
			  "sResultD4: " & TypeName(sResultDT4) & " " & sResultDT4

	MsgBox sOutput

Das Vorbelegen der Datumsvariablen gelingt mir nur mit einem String im Format yyyyMMddhhmmss. Als Werte erhalte ich Strings zurück. Wenn ich an den DateTime-Feldern die Vorbelegung nicht ändere, sind diese leer. Wenn ich am Datum Änderungen vornehme erhalte ich einen korrekten String im Format yyyyMMdd:

image

Hier habe ich die Zeilen 2, 3 und 4 geändert. Die abschließende MsgBox liefert:

image

Der die unveränderte Zeile kommt unverändert zurück, die beiden veränderten DateTime-Variablen (mit und ohne Vorbelegung) liefern einen Leerstring, die Date-Kontrollvariable liefert das korrekte, geänderte Datum in einem String zurück.

Was mache ich bei den DateTime-Variablen falsch???
—> Antwort selbst gefunden: Vierter Parameter bei oDlgObj.DefineVariable darf nicht 0 sein (entgegegen der Dokumentation)

Danke im Voraus
Wolfgang

-----> Antwort selber gefunden, kann geschlossen werden; Allerdings ist das Verhalten von Date- und DateTime-Variablen unterschiedlich.

Wir kümmern uns darum, dass der übergebene Length-Parameter für ‚D‘, ‚T‘, ‚L‘ einheitlich ignoriert und auf den intern erforderlichen Wert gesetzt wird, so dass man von außen da über nichts stolpern kann. Außerdem korrigieren wir die Doku, denn Length bestimmt auch bei ‚C‘, die maximal eingebbare Länge.