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:
Hier habe ich die Zeilen 2, 3 und 4 geändert. Die abschließende MsgBox liefert:
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.