在 vba 的插入查询中设置日期参数?

Posted

技术标签:

【中文标题】在 vba 的插入查询中设置日期参数?【英文标题】:Setting a Date Parameter in an insert query in vba? 【发布时间】:2013-12-06 19:22:30 【问题描述】:

当尝试插入从 Now 函数获得的 vba Date 时,我收到错误消息:

“参数数量错误或属性分配无效”

由于我已经计算了参数,我将不得不假设这与尝试将日期分配给下面的参数v_logdate 有关:

Dim timeOfExecution As Date
timeOfExecution = Now
' ...

' INSERT a log record that says that this guy was 
Dim qdef1 As DAO.QueryDef
Set qdef1 = db.QueryDefs("InsertAllTimeSyncLogRecord")

With qdef
     ' ...set some other parameters
    .Parameters("v_logdate").Value = timeOfExecution ' timeOfExecution
     ' ...set some other parameters
End With

qdef1.Execute , dbFailOnError

我的插入语句 (InsertAllTimeSyncLogRecord) 如下所示: 在AllTimeSyncLog 表中,将插入参数的LogDate 字段是Date/Time 类型。

INSERT INTO AllTimeSyncLog ( 
   abradcwhash, hash, LogDate, firstname, lastname, 
   cohortid, email, department, [password], method, username 
)
VALUES (
    v_abradcwhash, v_hash, v_logdate, v_firstname, v_lastname, 
    v_cohortid, v_email, v_department, v_password, v_method, v_username
);

还有其他方法需要我将timeOfExecution Date 分配给我的InsertAllTimeSyncLogRecord DAO.QueryDef 中的v_logdate 参数吗?

【问题讨论】:

您将保存的查询定义分配给qdef1,但随后在with 子句中使用qdef(不带尾随1)。这是翻译成 SO 的错字还是问题的根源? 当我将日期从 vba 插入到 sql server 中时,我通常在插入之前像这样格式化它'" & Format(Now, "yyyy-mm-dd hh:nn:ss") & "' 您使用的是外部数据源(例如 SQL Server)还是 Access 的内置数据库引擎 (JET)?您使用的是哪个版本的 Access? 【参考方案1】:

还值得一提的是,在 MS Access 中,您需要用井号 (#) 将日期括起来,尽管我不确定这是否适用于 querydef 参数,但我认为是这样。

【讨论】:

以上是关于在 vba 的插入查询中设置日期参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在存储过程中设置日期时间可选参数?

VBA 代码中的 MS Access SQL 查询

MySQL 在插入时在 DATETIME 字段中设置当前日期

如何在 Google Cloud Bigtable 中设置未来的插入日期?尝试使用 TTL 计算它

在命名查询的 ORDER BY 中设置参数

如何在默认情况下停止 datetimepicker 在文本框中设置今天的日期 onclick