Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Соедение с базой SQL через макрос - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Соедение с базой SQL через макрос (Макросы/Sub)
Соедение с базой SQL через макрос
spunch Дата: Суббота, 26.07.2014, 17:22 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
Добрый вечер! НЕ могу решить следующую проблему? подключение к базе данных SQL через макрос. надо просто из таблицы выевсти данные в excel/
[vba]
Код
Option Explicit
Private Sub testADO()
Dim oConn As Object, oRS As Object, fld As Object
Dim nRow As Integer, nCol As Integer

Set oConn = CreateObject("ADODB.Connection")
Set oRS = CreateObject("ADODB.Recordset")
oConn.Open "Provider=MSDASQL;SERVER=ЮЛЯ-ПК;DATABASE=test;"

oRS.Open "SELECT * FROM tst", oConn

nCol = 1
For Each fld In oRS.Fields
Cells(1, nCol).Value = fld.Name
nCol = nCol + 1
Next

oRS.MoveFirst
nRow = 2
Do Until oRS.EOF
nCol = 1
For Each fld In oRS.Fields
Cells(nRow, nCol).Value = fld.Value
nCol = nCol + 1
Next
oRS.MoveNext
nRow = nRow + 1
Loop
oRS.Close
End Sub

А у меня подключение к базе через аутентификацию виндовс. видимо я не так прописываю. что нужно изменить?
[/vba]


Сообщение отредактировал Serge_007 - Суббота, 26.07.2014, 20:07
 
Ответить
СообщениеДобрый вечер! НЕ могу решить следующую проблему? подключение к базе данных SQL через макрос. надо просто из таблицы выевсти данные в excel/
[vba]
Код
Option Explicit
Private Sub testADO()
Dim oConn As Object, oRS As Object, fld As Object
Dim nRow As Integer, nCol As Integer

Set oConn = CreateObject("ADODB.Connection")
Set oRS = CreateObject("ADODB.Recordset")
oConn.Open "Provider=MSDASQL;SERVER=ЮЛЯ-ПК;DATABASE=test;"

oRS.Open "SELECT * FROM tst", oConn

nCol = 1
For Each fld In oRS.Fields
Cells(1, nCol).Value = fld.Name
nCol = nCol + 1
Next

oRS.MoveFirst
nRow = 2
Do Until oRS.EOF
nCol = 1
For Each fld In oRS.Fields
Cells(nRow, nCol).Value = fld.Value
nCol = nCol + 1
Next
oRS.MoveNext
nRow = nRow + 1
Loop
oRS.Close
End Sub

А у меня подключение к базе через аутентификацию виндовс. видимо я не так прописываю. что нужно изменить?
[/vba]

Автор - spunch
Дата добавления - 26.07.2014 в 17:22
_Boroda_ Дата: Суббота, 26.07.2014, 17:45 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Не нравится мне что-то Ваша строка подключения (хотя, могу и ошибаться - внимательно не смотрел). Посмотрите здесь


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНе нравится мне что-то Ваша строка подключения (хотя, могу и ошибаться - внимательно не смотрел). Посмотрите здесь

Автор - _Boroda_
Дата добавления - 26.07.2014 в 17:45
doober Дата: Воскресенье, 27.07.2014, 02:45 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
_Boroda_ прав.
У вас строка подключения не правильная.
ЮЛЯ-ПК вы с него заходите на сервер?
Если работаете по сети,то подключайтесь через аутентификацию Sql сервера
Строка подключения будет такая
[vba]
Код

Provider=SQLOLEDB.1;Password=Пароль;Persist SecurityInfo=True;User ID=Логин;Initial Catalog=test;Data Source=ЮЛЯ-ПК\SQLEXPRESS
[/vba]
Или так
[vba]
Код

Provider=SQLOLEDB.1;Password=Пароль;Persist SecurityInfo=True;User ID=Логин;Initial Catalog=test;Data Source=111.194.94.52,1433
[/vba]




Сообщение отредактировал doober - Воскресенье, 27.07.2014, 02:50
 
Ответить
Сообщение _Boroda_ прав.
У вас строка подключения не правильная.
ЮЛЯ-ПК вы с него заходите на сервер?
Если работаете по сети,то подключайтесь через аутентификацию Sql сервера
Строка подключения будет такая
[vba]
Код

Provider=SQLOLEDB.1;Password=Пароль;Persist SecurityInfo=True;User ID=Логин;Initial Catalog=test;Data Source=ЮЛЯ-ПК\SQLEXPRESS
[/vba]
Или так
[vba]
Код

Provider=SQLOLEDB.1;Password=Пароль;Persist SecurityInfo=True;User ID=Логин;Initial Catalog=test;Data Source=111.194.94.52,1433
[/vba]

Автор - doober
Дата добавления - 27.07.2014 в 02:45
spunch Дата: Понедельник, 28.07.2014, 20:32 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
У меня локальное соединение. получается только сервер пишу и все. нет логина и пароля. что мне в данном случае указывать. локальное соединение на домашнем компе.
И что вот это Data Source=111.194.94.52,1433???? я так понимаю сервер
 
Ответить
СообщениеУ меня локальное соединение. получается только сервер пишу и все. нет логина и пароля. что мне в данном случае указывать. локальное соединение на домашнем компе.
И что вот это Data Source=111.194.94.52,1433???? я так понимаю сервер

Автор - spunch
Дата добавления - 28.07.2014 в 20:32
doober Дата: Понедельник, 28.07.2014, 21:42 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
Для локалки
Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial Catalog=test;Data Source=localhost\SQLEXPRESS;


 
Ответить
СообщениеДля локалки
Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial Catalog=test;Data Source=localhost\SQLEXPRESS;

Автор - doober
Дата добавления - 28.07.2014 в 21:42
spunch Дата: Вторник, 29.07.2014, 18:59 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
doober, все равно не подключает. не понимаю в чем проблема(((

прописываю так:

[vba]
Код
Option Explicit
Private Sub test()
Dim oConn As Object, oRS As Object, fld As Object
Dim nRow As Integer, nCol As Integer

Set oConn = CreateObject("ADODB.Connection")
Set oRS = CreateObject("ADODB.Recordset")
oConn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial Catalog=bazadn;Data Source=localhost\SQLEXPRESS;"

oRS.Open "SELECT * FROM bazadn", oConn

nCol = 1
For Each fld In oRS.Fields
Cells(1, nCol).Value = fld.Name
nCol = nCol + 1
Next

oRS.MoveFirst
nRow = 2
Do Until oRS.EOF
nCol = 1
For Each fld In oRS.Fields
Cells(nRow, nCol).Value = fld.Value
nCol = nCol + 1
Next
oRS.MoveNext
nRow = nRow + 1
Loop
oRS.Close
End Sub
[/vba]
и вот такая ошибка выходит(( что это почему не подключает вродле все верно((((
К сообщению приложен файл: 4474762.jpg (20.5 Kb)


Сообщение отредактировал Serge_007 - Вторник, 29.07.2014, 21:51
 
Ответить
Сообщениеdoober, все равно не подключает. не понимаю в чем проблема(((

прописываю так:

[vba]
Код
Option Explicit
Private Sub test()
Dim oConn As Object, oRS As Object, fld As Object
Dim nRow As Integer, nCol As Integer

Set oConn = CreateObject("ADODB.Connection")
Set oRS = CreateObject("ADODB.Recordset")
oConn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial Catalog=bazadn;Data Source=localhost\SQLEXPRESS;"

oRS.Open "SELECT * FROM bazadn", oConn

nCol = 1
For Each fld In oRS.Fields
Cells(1, nCol).Value = fld.Name
nCol = nCol + 1
Next

oRS.MoveFirst
nRow = 2
Do Until oRS.EOF
nCol = 1
For Each fld In oRS.Fields
Cells(nRow, nCol).Value = fld.Value
nCol = nCol + 1
Next
oRS.MoveNext
nRow = nRow + 1
Loop
oRS.Close
End Sub
[/vba]
и вот такая ошибка выходит(( что это почему не подключает вродле все верно((((

Автор - spunch
Дата добавления - 29.07.2014 в 18:59
doober Дата: Среда, 30.07.2014, 14:08 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
У вас прав на эту базу нет,что то намудрили в настройках сервера для этой базы.
Создайте юзера с правами для этой базы и будет вам счастье.


 
Ответить
СообщениеУ вас прав на эту базу нет,что то намудрили в настройках сервера для этой базы.
Создайте юзера с правами для этой базы и будет вам счастье.

Автор - doober
Дата добавления - 30.07.2014 в 14:08
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Соедение с базой SQL через макрос (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!