Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2009, 14:44   #1
Lyubov1990
Пользователь
 
Аватар для Lyubov1990
 
Регистрация: 06.04.2009
Сообщений: 34
По умолчанию Помогите соединиться

Здравствуйте, помогите мне пожалуйста!!!! Нужно экспортировать БД из SQL Server в рабочую книгу Excel с помощью VBA!
Lyubov1990 вне форума Ответить с цитированием
Старый 01.06.2009, 17:04   #2
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Цитата:
Сообщение от Lyubov1990 Посмотреть сообщение
Здравствуйте, помогите мне пожалуйста!!!! Нужно экспортировать БД из SQL Server в рабочую книгу Excel с помощью VBA!
Для экспотра не обходимо знать несколько вещей.
1. База данных в SQL может иметь очень много записей. У меня к примеру база за год при количестве идентификаторов 200, с тем что записывается от одного источника каждые 3 минуты. Получаем более 87 млн. записей - строчек. Не знаю как 2007 Excel но 2003 это слишком много. Поэтой причине необходимо записи фильтровать.
2. Необходимо знать точное количество экспотртируемых полей. Конечно можно воспользоваться некоторыми прибамбахами SQL сервера но это немножко ...
3. Необходимо знать логи и пароль доступа для чтения базы.
Зная все это код получается достаточно простой.
4. Имя базы данных.
5. Имя SQL сервера. Учти что администраторы для большей путаницы могут использовать различные протоколы для подключения к серверу. (IP, NONAME ...)
Код:
dim i as long
dim st as string
Dim Conn As ADODB.Connection
Dim oRes As ADODB.Recordset
Dim oCmd As ADODB.Command
Set Conn = CreateObject("ADODB.Connection")
Set oRes = CreateObject("ADODB.Recordset")
Set oCmd = CreateObject("adodb.command")

Conn.Open "Provider=SQLOLEDB.1;Password=_ПАРОЛЬ;Persist Security Info=True;
_User ID=_ЛОГИН;Initial Catalog=_ИМЯ_БАЗЫ;Data Source=_ИМЯ_SQL_СЕРВЕРА"

oCmd.ActiveConnection = Conn
st = "_ИСПОЛЬЗУМЫЙ ДЛЯ БД ФИЛЬТР'"
oCmd.CommandText = str
oCmd.Execute
st = "select * from _БД where _Дополнительный фильтр"
oRes.Open str, Conn
i=1
if NOT EOF then
  do while NOT EOF
      sheet.Range("a"&i)= oRes.fields(0).value
      sheet.Range("b"&i)= oRes.fields(1).value
      ...
      oRes.MoveNext
      i=i+1
  loop
end if

Последний раз редактировалось Юнлинг; 01.06.2009 в 17:07.
Юнлинг вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц