I use Access with SQL Server, in customer table (customer birth date is optional column), if user left it null while creating record by stored procedure date recorded as (30/12/1899) as shown in the screenshot:
I found this solution, but I really didn't figure it out where exactly I need to change in code or database.
I already tried following code in access.vba to pass empty date
cmd.Parameters.Append cmd.CreateParameter("@p_custi_birth_date", adDBTimeStamp, adParamInput, , Format(CDate(Nz(!custi_birth_date, Empty)), "YYYY-MM-DD"))
This is the SQL statement in the stored procedure to record null if parameter empty
CAST(NULLIF(@p_custi_birth_date, '') AS DATE)

adVarChardata type for your parameter - but your code is still usingadDBTimeStamp. I'm not sure why you are saying you don't know where to change that in the code. It's exactly in the line you posted - changingadDBTimeStamptoadVarChar. How about trying that fix? Although I'm not sure if casting''to date will actually work in your stored procedure ...datedata types. Don't use character data types. Character data types are unecessary and just confuse the issue.