1

我正在制作一些宏并从用户那里获取 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

Range("A2").CopyFromRecordset (rs)这是我遇到错误的地方

运行类型错误“430”类不支持自动化或不支持预期的接口我拥有所有的 dll 并注册了它们。我什至没有参考资料。

如果有人遇到这个问题,请帮助...

4

1 回答 1

0

SQL Server 没有调用函数Format(MS Access 和 VB 有)。

在 SQL Server 中,您将使用Convert(首先验证 SQL Server 数据类型是 datetime,而不是 varchar 或 char)

或者,如果您的日期选择器以正确的格式返回数据,您可以直接将其添加:

q = q & " where logdate='" & d & "'"

请注意,如果您有时间组件,则需要将其剥离。

所以...

  1. 试试上面的代码
  2. 验证数据库是 SQL Server 并且数据类型是 DATETIME
  3. 检查日期选择器的内容作为字符串并验证其格式
于 2013-04-09T05:12:57.870 回答