Mysql 使用ADODB.Parameter获取两个日期之间的值
(1)表格: (2)VBAMysql 使用ADODB.Parameter获取两个日期之间的值,mysql,sql,excel,vba,Mysql,Sql,Excel,Vba,(1)表格: (2)VBA Sub Get_Data() Dim conn As ADODB.Connection, _ cmd As New ADODB.Command, _ param As ADODB.Parameter, _ rs As New ADODB.Recordset Set conn = New ADODB.Connection conn.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver}; SERVER=l
Sub Get_Data()
Dim conn As ADODB.Connection, _
cmd As New ADODB.Command, _
param As ADODB.Parameter, _
rs As New ADODB.Recordset
Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver}; SERVER=localhost; DATABASE=bi; UID=username; PWD=password; OPTION=3"
conn.Open
Set cmd.ActiveConnection = conn
cmd.CommandText = " SELECT Product " & _
" FROM logistics " & _
" WHERE DATE(insert_timestamp) BETWEEN ? AND ? GROUP BY 1"
Set param = cmd.CreateParameter(, adDate, adParamInput, , "2020-02-24 00:00:00")
cmd.Parameters.Append param
Set param = cmd.CreateParameter(, adDate, adParamInput, , "2020-02-24 23:59:59")
cmd.Parameters.Append param
Set rs = cmd.Execute
Set rs = New ADODB.Recordset
rs.Open strSQL, conn, adOpenStatic
heet1.Range("A1").CopyFromRecordset rs
rs.Close
conn.Close
End Sub
通过上面的脚本,我试图从表logistics
中获取数据我想使用一个答案中建议的
ADODB.Parameter
但是,使用上面的代码,我在
设置rs=cmd.Execute
上得到运行时错误'-2147217900(80040e14)
我需要在我的
VBA
中更改什么才能使其工作?“2020-02-24 00:00:00”
是一个字符串,而不是一个日期。尝试CDate(“2020-02-24 23:59:59”)
,或者DateSerial(2020,2,24)+TimeSerial(23,59,59)
还有,为什么要用Set rs=New ADODB.Recordset…
作为cmd.Execute()
返回记录测试?或者,不要调用Execute
,而是调用rs.opencmd
。参见MSDN。另外,如上一个问题中的一个答案。如果要排除边界,请不要在之间使用。使用=
和“2020-02-24 00:00:00”
是字符串,而不是日期。尝试CDate(“2020-02-24 23:59:59”)
,或者DateSerial(2020,2,24)+TimeSerial(23,59,59)
还有,为什么要用Set rs=New ADODB.Recordset…
作为cmd.Execute()
返回记录测试?或者,不要调用Execute
,而是调用rs.opencmd
。参见MSDN。另外,如上一个问题中的一个答案。如果要排除边界,请不要在
之间使用。使用=
和
Sub Get_Data()
Dim conn As ADODB.Connection, _
cmd As New ADODB.Command, _
param As ADODB.Parameter, _
rs As New ADODB.Recordset
Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver}; SERVER=localhost; DATABASE=bi; UID=username; PWD=password; OPTION=3"
conn.Open
Set cmd.ActiveConnection = conn
cmd.CommandText = " SELECT Product " & _
" FROM logistics " & _
" WHERE DATE(insert_timestamp) BETWEEN ? AND ? GROUP BY 1"
Set param = cmd.CreateParameter(, adDate, adParamInput, , "2020-02-24 00:00:00")
cmd.Parameters.Append param
Set param = cmd.CreateParameter(, adDate, adParamInput, , "2020-02-24 23:59:59")
cmd.Parameters.Append param
Set rs = cmd.Execute
Set rs = New ADODB.Recordset
rs.Open strSQL, conn, adOpenStatic
heet1.Range("A1").CopyFromRecordset rs
rs.Close
conn.Close
End Sub