2014-10-29 3 views
0

Я пытаюсь использовать VBA в Excel для запроса базы данных SQL, и мне был предоставлен ниже код в качестве отправной точки, который является удивительным, но я не знаю синтаксиса для написания строки подключения и до сих пор не смогли его найти. Надеюсь, вы, ребята, можете мне помочь.Как написать строку подключения

Dim cn as new ADODB.Connection 
Dim rs as new ADODB.Recordset 

Cn.ConnectionString = “your connection string” 
Cn.Open 
Rs.Open “query like SELECT * FROM MYTABLE etc.”, cn 
Range(“A1”).CopyFromRecordset rs 

Rs.close 
Cn.close 
+2

если некоторые прибегая к помощи им, что вы найдете тонны примеров – Steve

+1

[www.connectionstrings.com] (http://www.connectionstrings.com/sql-server/) является хорошим местом для начала. Что-то вроде этого: 'cn.ConnectionString =" Provider = SQLOLEDB.1; Источник данных = Имя_сервера; Начальный каталог = имя_базы; TRUSTED_CONNECTION = YES "' –

+0

Я занимаюсь поиском в течение последних 2 недель и еще не нашел то, что мне нужно было имеют смысл для моего мозга. Однако то, что предоставил Portland Runner, очень полезно. Спасибо, сэр. Теперь мне просто нужно выяснить, почему это дает мне ошибку complie: User-Defined type not defined error в первой строке Dim –

ответ

1

Этот код может помочь вам (это как раз то, что я имел под рукой близко к тому, что вы пытаетесь сделать, и не переписывание вашей), но строка подключения будет меняться в зависимости от вашей базы данных. Пойдите here для получения дополнительной информации о синтаксисе самой строки. Вы получаете ошибку компиляции, потому что у вас нет правильных ссылок. В VBE откройте «Инструменты» и выберите «Ссылки». Убедитесь, что библиотека ActiveX Data Objects 6.1 установлена.

Private Sub GetFieldNames() 

Set con1 = New ADODB.Connection 
Set rs1 = New ADODB.Recordset 
Dim ProjectName As String 
Dim ConCat As String 

con1.ConnectionString = "Provider=SQLOLEDB;Data Source=SERVERADDRESS;Initial Catalog=DATABSE;IntegratedSecurity=SSPI" 
con1.Open 

With rs1 
    .ActiveConnection = con1 
    .Open "SELECT column_name,* From information_schema.columns Where table_name = 'Projects' ORDER by ordinal_position" 
    Sheet1.Range("A1").CopyFromRecordset rs1 

    .Close 

End With 


con1.Close 
Set con1 = Nothing 

End Sub 
+0

Мне удалось изменить код и добавить ссылку, как вы предложили, чтобы получить гораздо больше в этом процессе, однако я получаю другую проблему сейчас, когда он говорит о недопустимой авторизации Ошибка спецификации при попытке открыть строку подключения. –

+1

Возможно, это связано с частью «IntegratedSecurity = SSPI». Вам нужно выяснить, как вы подключаетесь к базе данных SQL Server. Это проверка подлинности Windows или проверка подлинности SQL Server? Затем вам необходимо соответствующим образом изменить строку подключения. Существует много информации о строках подключения. Задайте конкретный вопрос, и мы сможем помочь. –

+0

Мне удалось заставить его работать, мне пришлось добавить пароль в строку подключения (это проверка подлинности SQL Server). Я просто не думал, что мне нужна эта часть, поскольку файл подключения excel делает, когда вы делаете это с помощью мастера, иметь его в этом файле, и я использовал этот файл, чтобы помочь написать код. –

Смежные вопросы