sql - 错误 3061:在 VBA 中使用 datepart() 时需要的参数 1 太少
问题描述
我想填写一个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"
了,我没有看到错误,但记录集是空的!
解决方案
我的问题是我的表托管在 sql server 上。通过 VBA,我使用 DAO 来互操作数据库。因此,在 Microsoft SQL 服务器管理中工作的查询不一定适用于访问,因为访问查询有点特定
推荐阅读
- python - 如何减去列表中项目的值和变量python
- compiler-errors - 推力集操作未编译
- javascript - reactjs + webpack + babel 7 语法错误:销毁时其余元素必须是最后一个元素
- php - 如何从 eval 函数中打印值
- react-native - 如何用自定义操作表替换默认共享选项弹出窗口?
- wcf - 用于 wsHttpBinding 的 Windows 身份验证的 WCF 服务器配置
- android - React native android Undefined is not function
- c# - 当我调试我的 UWP 应用程序时出现与组件 DLL 相关的错误?
- android - 您如何兼容具有多种屏幕尺寸的 Android 应用程序 UI?
- android - ArrayList outOfBoundsException 数据库错误