You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VBA中为Access表的DateTime字段正确赋值

VBA给Access表DateTime字段赋值的解决方案

核心错误排查

  • 首先修正测试取值的变量名拼写错误:你定义的Recordset对象名为readingSet,后续测试取值时写的reading!ReadingDate属于变量名写错,读取的是其他无关对象的值,所以得到的6/29/2021和空值等错误结果都和赋值逻辑无关。
  • 不要在readingSet.Update执行前读取Recordset缓存中未提交的字段值,此时读取结果没有参考意义,应该执行Update后重新查询表数据校验结果。

正确赋值方法

方法1:显式调用Value属性赋值

避免隐式成员调用的转换坑,直接给字段的Value属性赋值:

readingSet.AddNew                              
readingSet!jobinstrumentimportid = jobInstImportId
' 显式指定Value属性
readingSet!ReadingDate.Value = CDate("10/13/2021 4:05:05 PM")
readingSet!readingTime = lineArray(1)
readingSet!decibelreading = CDbl(lineArray(2))
readingSet.Update

方法2:使用VBA日期字面量避免区域解析问题

如果CDate受系统区域日期格式影响解析出错,可以直接用#包裹日期字面量,完全绕过CDate的转换逻辑:

readingSet!ReadingDate.Value = #10/13/2021 16:05:05#

方法3:临时变量中转赋值

如果还是有问题,可以先把日期值存到Date类型临时变量再赋值,进一步规避隐式转换问题:

Dim readDate As Date
readDate = CDate("10/13/2021 4:05:05 PM")
readingSet!ReadingDate.Value = readDate

附加排查项

  • 确认表中ReadingDate字段类型确实为「日期/时间」,没有设置特殊的验证规则、输入掩码限制输入
  • 确认VBA代码中没有开启On Error Resume Next忽略了赋值时抛出的错误

内容的提问来源于stack exchange,提问作者Doug Kimzey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:54:04