我正在制作一些宏并从用户那里获取datea和db。在此基础上我从db获取数据。 这是我的代码,如果您有任何解决方案,请查看并分享。
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Function GetConnectionString() As String
Dim strCn As String
strCn = "Provider=sqloledb;"
strCn = strCn & "Data Source=" & Range("Server") & ";"
strCn = strCn & "Initial Catalog=" & Range("Database") & ";"
If (Range("UserID") <> "") Then
strCn = strCn & "User ID=" & Range("UserID") & ";"
strCn = strCn & "password=" & Range("Pass")
Else
strCn = strCn & "Integrated Security = SSPI"
End If
GetConnectionString = strCn
End Function
Sub Test()
ActiveWorkbook.Sheets("Sheet1").Activate
Dim ws As Worksheet
Dim Sql As String
Dim d As String
d = Range("A2").Value
d = Format(d, "yyyy-mm-dd")
cn.ConnectionTimeout = 100
cn.Open GetConnectionString()
Sql = "select * from config where convert(date,logadate,103)='"& d &"'"
ExecInsert (Sql)
Set rs.ActiveConnection = cn
rs.Open Sql
ActiveWorkbook.Sheets("Sheet2").Activate
Dim ws1 As Worksheet
**Range("A2").CopyFromRecordset (rs)**
cn.Close
End Sub
Sub ExecInsert(selectquery As String)
'End Sub
Dim cmd As New ADODB.Command
cmd.CommandText = selectquery
cmd.CommandType = adCmdText
cmd.ActiveConnection = cn
cmd.Execute
End Sub
范围(“A2”)。CopyFromRecordset(rs)这是我收到错误的地方
运行类型错误'430'类不支持自动化或不支持预期 接口 我有所有的dll并注册了它们。甚至在我的结尾都没有遗漏任何参考。
如果有任何机构面对这个问题,请帮助......
答案 0 :(得分:0)
SQL Server没有名为Format
的函数(MS Access和VB)。
在SQL Server中,您将使用Convert
(首先验证SQL Server数据类型是datetime,而不是varchar或char)
或者如果你的日期选择器以正确的格式返回数据,你可以直接添加:
q = q & " where logdate='" & d & "'"
请注意,如果您有时间组件,则需要将其删除。
因此...