Ich berechne mit Daten in MS Access mit VBA. Das funktioniert gut, wenn ich zwei Daten auf dem gleichen Formular habe (ex 2016-01-21), aber nicht, wenn ich zuerst eine Zeichenfolge in Datumsform ändern muss: 20160121 -> 2016-01-21.Inkompatible Typen mit CDate() in Access VBA
Das ist, was ich versuche zu tun:
Dim sYear As String, sMonth As String, sDay As String, sDate As String
sYear = Left("20160121", 4)
sMonth = Mid("20160121", 5, 2)
sDay = Mid("20160121", 7, 2)
sDate = sYear & "-" & sMonth & "-" & sDay
MsgBox CDate(sDate)
Dies gibt Fehler 13, Inkompatible Typen. obwohl
Dies funktioniert:
MsgBox CDate("2016-01-21")
Warum nicht meine Art und Weise der Arbeit?
Der obige Code funktioniert. Meine Vermutung ist, dass '" 20160121 "' nicht wirklich ein fester Wert ist, sondern ein Datenbankfeld, das Null enthalten kann? Wenn das so ist, benutze [die 'Nz()' -Funktion] (https://msdn.microsoft.com/en-us/library/office/aa172237%28v=office.11%29.aspx?f=255&MSPPError=- 2147217396). – Tomalak
Du hast recht, es funktioniert, aber ... Statt "20160121" habe ich eine Variable, var, die ich von einer Textbox bekomme. Ich kann var in den Funktionen Left() und cDate() verwenden, aber wenn ich es in Mid() verwende, tut es das nicht ... Macht es das klarer? – PoorCadaver
Nein, nicht wirklich, leider. Setzen Sie einen Haltepunkt in Ihrem Code, durchlaufen Sie ihn Zeile für Zeile, notieren Sie sich die genaue Zeile, in der der Fehler auftritt, und alle Variablenwerte zu diesem Zeitpunkt. Dies muss eine einfache Aufsicht und kein echtes Problem sein. – Tomalak