1

私はいくつかのマクロを作成し、ユーザーから dataa と 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 のデータ型が varchar や char ではなく、datetime であることを確認します)。

または、日付ピッカーが正しい形式でデータを返す場合は、次のように直接追加できます。

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

時間コンポーネントがある場合は、それを取り除く必要があることに注意してください。

そう...

  1. 上記のコードを試してください
  2. データベースが SQL Server であり、データ型が DATETIME であることを確認します
  3. 日付ピッカーの内容を文字列として検査し、その形式を確認します
于 2013-04-09T05:12:57.870 に答える