【问题标题】:Error 3061: Too few parameters 1 required when using datepart() in VBA错误 3061:在 VBA 中使用 datepart() 时需要的参数 1 太少
【发布时间】:2021-05-01 17:43:36
【问题描述】:

我想填写一个excel表,数据存储在SQL server下的一个数据库中。我通过 VBA 做到这一点

Sub fillRows(db As DAO.Database, query As String, row As Integer)

    Dim rs As DAO.recordSet
    Set rs = db.OpenRecordset(query, dbOpenDynaset, dbSeeChanges)

    column = 2
    Do While Not rs.EOF
        ' fill the row

         Sheets(1).Cells(row, column) = rs.Fields(0).Value

         column = column + 1

         ' Move to next Record
         rs.MoveNext
    Loop
    rs.Close
End Sub


Sub main()


    Dim conn As DAO.Database
    Dim query As String

    Set conn = connectToDb()

    query = "select idCourse from dataCourse where datepart(dd,depart_time) = 18 order by idCourse"

    Call fillRows(conn, query, 1)

End Sub

我收到此错误:错误 3061:需要的参数 1 太少

问题确实是查询,更准确地说是“日期部分”,因为当我将请求更改为

select idCourse from dataCourse order by idCourse

它有效。

我指定当我在 SQL Server Management Studio 中使用 datepart() 启动请求时它起作用了。

我认为 datepart() 是一个 VBA 函数,所以这就是冲突的原因。

我也试过query = "select idCourse from traincourse where " & DatePart("d", depart_time) & " = 18 order by idCourse"我没有看到错误但记录集是空的!

【问题讨论】:

  • 试试select idCourse from dataCourse where day(depart_time) = 18 order by idCourse w3schools.com/sql/func_sqlserver_day.asp
  • @TimWilliams 是的,它适用于 day(depart_time) thx,但是 datepart() 有什么问题!
  • 也许datepart('dd',depart_time)

标签: sql excel vba


【解决方案1】:

我的问题是我的表托管在 sql server 上。通过 VBA,我使用 DAO 来互操作数据库。因此,在 Microsoft SQL 服务器管理中工作的查询不一定适用于访问,因为访问查询有点具体

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    相关资源
    最近更新 更多