【问题标题】:How to pass VBA string into SQL Server ADODB query?如何将 VBA 字符串传递给 SQL Server ADODB 查询?
【发布时间】:2021-03-03 00:22:24
【问题描述】:

VBA 字符串到 SQL 适用于“来自其他非日期列的 WHERE”

我尝试了几次尝试:查询中的 CAST,将两者都转换为整数等。

查询返回 0 或前几列有时是在 VBA 中运行时所有行的日期范围,但是当将 VBA SQL 字符串粘贴到 SQL 中时,它可以工作。

    'datecol is type Date in SQL

    Dim conn as ADODB.Connection
    Dim rs as ADODB.Recordset
    Dim strdate, sqldate as String

    strdate = "11/10/20"
    sqldate = "SELECT * FROM dbTable1 WHERE datecol = '" & strdate & "'"; 

    Set rs = conn.Execute(sqldate)
    arrayRows = rs.GetRows
    rs.Close
    arrayRowsTranspose = Application.Transpose(arrayRows)

【问题讨论】:

  • 使用 ADDB.Parameter 将变量传递给查询,例如 stackoverflow.com/a/60640185/7599798 。请注意,Date 可能包含时间部分。
  • 感谢您的创意!我不确定我是否正确转换了 ADDB.Parameter。您介意使用 ADDB.Parameter 方法发布代码将如何更改吗?谢谢!
  • 或多或少地剪切和粘贴链接中的代码。请注意,您需要创建一个 ADODB.command 对象。你需要知道你在数据库中的日期是否有时间部分。如果没有,只创建一个参数就足够了

标签: sql-server vba


【解决方案1】:

可能日期格式不正确,这样试试

strdate = "2020-11-10"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    相关资源
    最近更新 更多