Выборка данных из SQL Server в VBA - PullRequest
3 голосов
/ 15 апреля 2011

Привет. Ниже приведен мой код, я не могу получить данные с моего сервера SQL, его ошибка броска как

Compiler error :  object required.

Нет проблем с соединением, соединение успешно.

Пожалуйста, исправьте мой код, помогите мне с этим

Private Sub CommandButton1_Click()
Set SQLConn = CreateObject("ADODB.Connection")

SQLConn.Open "provider =sqloledb; Data Source = xxxx; Initial Catalog = jjjj; User Id = yyyy; Password = zzzz"

       MsgBox "Connection Succesful"

Set SQLData = CreateObject("ADODB.Recordset")
With SQLData

    ' Assign the Connection object.
    .ActiveConnection = SQLConn

    ' Extract the required records.
    .Open "select invoice_num, invoice_date, invoice_amount from im_invoice where billing_account = 'HS0076A' and invoice_date ='01-apr-2011'"

    ' Copy the records into cell A1 on Sheet1.
    Sheet1.Range("A1").CopyFromRecordset SQLData

    ' Tidy up
     .Close

End With

SQLConn.Close
Set SQLData = Nothing
Set SQLConn = Nothing

End Sub

Спасибо

спасибо, что работает ....:)

Ответы [ 2 ]

4 голосов
/ 21 ноября 2014

Я пишу этот запрос, когда вы хотите установить соединение между Excel и SQL Server в VBA, используя OLEDBConnecion. И да, это для проверки подлинности Windows. Решение упоминается ниже. Вам необходимо добавить ' Microsoft.ActiveX Object Library 2.8 '.

Sub GetDataFromADO()

    'Declare variables'
        Set objMyconn = New ADODB.Connection
        Set objMyCmd = New ADODB.Command
        Set objMyRecordset = New ADODB.Recordset
        Dim rc As Long

    'Open Connection'
        objMyconn.ConnectionString = "Provider=SQLOLEDB;Data Source=SAXAM\SQLEXPRESS;Initial Catalog=AdventureWorks2012; Integrated Security=SSPI;"

        objMyconn.Open

    'Set and Excecute SQL Command'
        Set objMyCmd.ActiveConnection = objMyconn
        objMyCmd.CommandText = "select * from [Person].[BusinessEntity] "
        objMyCmd.CommandType = adCmdText
        objMyCmd.Execute

    'Open Recordset'
        Set objMyRecordset.ActiveConnection = objMyconn
        objMyRecordset.Open objMyCmd

    'Copy Data to Excel'
        'ActiveSheet.Range("A1").CopyFromRecordset (objMyRecordset)
        Application.ActiveCell.CopyFromRecordset (objMyRecordset)
        rc = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
        ActiveSheet.Cells(rc + 1, 1).Select
        'Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Value
        objMyconn.Close

End Sub

Спасибо!

4 голосов
/ 15 апреля 2011

Отсутствует "Set" ...

' Assign the Connection object. 
Set .ActiveConnection = SQLConn 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...