【问题标题】:VBA Access Where Clause with Form Date Values带有表单日期值的 VBA 访问 Where 子句
【发布时间】:2018-07-30 21:27:05
【问题描述】:

我正在尝试编写带有 where 子句的 DoCmd.RunSQL,其中包含从表单传递的日期值。

我编写的代码运行没有错误,但返回 0 值,因此我认为这是日期格式问题...

DoCmd.RunSQL ("SELECT [Field1], [Field2] INTO [tbl_recordset] FROM qry_1" _
 & " WHERE (qry_1.Survey_Dt) >= #" & Format([Forms]![frm_Parameters]![txt_StartDate], "YYYY-MM-DD") & "# ;")

qry1.Survey_Dt是从SQL Server以默认格式(yyyy-mm-dd格式)传递过来的,Access是否会重新格式化父查询中的数据?

我尝试重新格式化父查询和子查询中的日期,但没有成功。

【问题讨论】:

  • 看起来 txt_StartDate 是伪装成日期的文本,不会响应格式。将 sql 放入字符串类型 var 并 debug.print 。
  • 当你debug.print "SELECT [Field1], [Field2] INTO [tbl_recordset] FROM qry_1" _ & " WHERE (qry_1.Survey_Dt) >= #" & Format([Forms]![frm_Parameters]![txt_StartDate], "YYYY-MM-DD") & "# ;" 时会发生什么?
  • 不客气。另外,由于您是 StackOverflow 的新手,我想通知您,您可以通过选中答案旁边的勾号来为好的答案投票并接受对您帮助最大的答案。在本网站上,点赞或接受的答案都算作“感谢”。

标签: vba ms-access


【解决方案1】:

有转换日期的功能,像这样?

Format(CDate([txt_StartDate]), "mm/dd/yyyy")

通用解决方案如下所示。

 Dim sql As String

    sql = "SELECT * " & _
            " FROM Table1 " & _
            " WHERE DateTimeValue >= #" & Format(aDateTimeVariable, "yyyy-mm-dd hh:nn:ss") & "#;"

有关其他想法,请参阅下面的链接。

https://codekabinett.com/rdumps.php?Lang=2&targetDoc=date-time-data-type-vba-access

【讨论】:

  • 谢谢!。我尝试了这种转换技术,但没有成功,我需要更改的日期值格式位于父查询(qry_1)中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-30
  • 2018-10-06
  • 1970-01-01
  • 1970-01-01
  • 2015-06-30
相关资源
最近更新 更多