Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос в Excel и SQLServer / 12 сообщений из 12, страница 1 из 1
09.12.2006, 12:02:23
    #34187721
ham3307
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос в Excel и SQLServer
В Excel через Данные - Внешние данные можно создать запрос.
Вопрос: Как всю эту механику зафиксировать в макросе?
...
Рейтинг: 0 / 0
09.12.2006, 12:53:24
    #34187764
stexs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос в Excel и SQLServer
вопрос, пожалуйста, поконкретней. вариантов очень много. рассказывать долго.
...
Рейтинг: 0 / 0
10.12.2006, 12:57:41
    #34188392
ham3307
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос в Excel и SQLServer
надо сделать макрос, который бы делел тоже, что и описанный сервис экселя. а именно: - устанавливал связь с сервером; - далее с базой; - запускал скул-запрос и получал результат.
все это надо когда есть таблица(список данных), к которым надо добавить информацию из базы.
и это надо, чтоб не устанавливать на сетевом компе клиентский скул-сервер, т.е. интерпрайз менеджер, а пользоваться только экселем.
...
Рейтинг: 0 / 0
10.12.2006, 16:31:40
    #34188558
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос в Excel и SQLServer
...
Рейтинг: 0 / 0
11.12.2006, 18:44:14
    #34191402
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос в Excel и SQLServer
ham3307В Excel через Данные - Внешние данные можно создать запрос.
Вопрос: Как всю эту механику зафиксировать в макросе?А зачем?
Можно поступить очень просто - создать один раз запрос, сохранить книгу с подготовленным запросом. А потом только рефрешить запрос.

Но если очень хочется, создавать запрос из макроса, то начни с этого:
Код: plaintext
1.
2.
3.
dim qt as QueryTable

set qt  = activesheet.QueryTables.Add("ODBC;DSN=MyDSN;UID=user;PWD=password", ActiveSheet.Range("A1"), "select f1, f2 from t1");
qt.Refresh()
...
Рейтинг: 0 / 0
12.12.2006, 11:28:22
    #34192584
Flaer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос в Excel и SQLServer
QueryTables очень неуобная весч!
Если уж совсем с нуля, то проще разобраться с ADO.
Говорю это, т.к. сам начал с QueryTables и знаю, какой это геморой
...
Рейтинг: 0 / 0
12.12.2006, 18:34:15
    #34194405
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос в Excel и SQLServer
FlaerQueryTables очень неуобная весч!
Если уж совсем с нуля, то проще разобраться с ADO.
Говорю это, т.к. сам начал с QueryTables и знаю, какой это геморойНеправ на все сто процентов.
1) QueryTable это родной механизм для Экселя. А ADO - внешний. Поэтому задача решеная через QueryTable всегда будет работать быстрее чем аналогичное решение через ADO.
2) С QT можно работать не лазая в VBA, а для любого чиха с ADO прийдется макрос писать.
...
Рейтинг: 0 / 0
13.12.2006, 18:59:27
    #34197849
Flaer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос в Excel и SQLServer
Спорить не буду, возможно не разобрался. У меня была такая трабла с QT: При всавке его на лист эта хрень постоянно пыталась обновляться. Всё бы ничего, но при выборке из базы в несколько гигов возникал страшный тормоз. ADO же позволяет полностью контролировать процесс. К тому же я не считаю ADO чем то чуждым экселю, т.к. ADO входит в стандартный MDAC
...
Рейтинг: 0 / 0
13.12.2006, 21:59:07
    #34198181
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос в Excel и SQLServer
FlaerСпорить не буду, возможно не разобрался. У меня была такая трабла с QT: При всавке его на лист эта хрень постоянно пыталась обновляться. Всё бы ничего, но при выборке из базы в несколько гигов возникал страшный тормоз.Смотря как вставлять.
Если надо из макроса, то QueryTables.Add() ничего не запрашивает. Сначала задал все параметры потом запустил .Refresh(). Если хочется интерактивно мышой сделать запрос, то.... его мышой можно сделать, а запрос через ADO мышой сделать нельзя :)
Flaer ADO же позволяет полностью контролировать процесс. К тому же я не считаю ADO чем то чуждым экселю, т.к. ADO входит в стандартный MDACВ MDAC то оно входит, но сам MDAC в состав офиса не входит :) Ту же документацию по ADO чтобы почитать, прийдется идти на сайт МСДНа и выкачивать MDAC.
Как ни крути, но ADO для Экселя нужно только в половине процента задач. Если надо "побыстрому" перетащить готовый sub из VB/VBS в VBA. Или хочется запускать хранимые процедуры с возвращаемыми параметрами. Все. Во всех остальных случаях QueryTable лучше.
...
Рейтинг: 0 / 0
14.12.2006, 09:57:17
    #34198727
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос в Excel и SQLServer
White Owlно сам MDAC в состав офиса не входит :)

вы либо получили эту инфу от офиса97 либо немного врете
...
Рейтинг: 0 / 0
14.12.2006, 15:40:39
    #34200442
stexs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос в Excel и SQLServer
ham3307надо сделать макрос, который бы делел тоже, что и описанный сервис экселя. а именно: - устанавливал связь с сервером; - далее с базой; - запускал скул-запрос и получал результат.
все это надо когда есть таблица(список данных), к которым надо добавить информацию из базы.
и это надо, чтоб не устанавливать на сетевом компе клиентский скул-сервер, т.е. интерпрайз менеджер, а пользоваться только экселем.

ну, давайте, попробуем так вот:

Public Sub goConn()
Dim conn As New ADODB.Connection
On Error GoTo errCon
conn.Provider = "sqloledb"
conn.Properties("Prompt") = 1
conn.Open "Data Source=my_SERVER;Initial Catalog=my_DB"
connstr = conn.ConnectionString
conn.Close

errCon:
Exit Sub

End Sub
'-------------------------------------------------------------
Public connstr As String

Sub my_sub()

Dim conn As New ADODB.Connection
Dim rst As New ADODB.Recordset

conn.Open connstr

conn.Execute " 'и тут, например, имя процедуры с переменными в базе данных"
'либо
rst.Open " ' и сразу пошёл код SQL. к примеру, select * from my_table'

-------------------------------------------------------------
Надеюсь информация Вам пригодится.
...
Рейтинг: 0 / 0
14.12.2006, 18:52:33
    #34201141
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос в Excel и SQLServer
Senin Viktor White Owlно сам MDAC в состав офиса не входит :)
вы либо получили эту инфу от офиса97 либо немного врете
Ни то и ни другое, просто я знаю что такое MDAC :)

MDAC это не только run-time библиотеки обеспечивающие доступ к данным, это еще и куча документации по этим библиотекам, примеры их использования, и вспомогательные утилиты (например ODBC Test позволяющий в интерактивном режиме отлаживать работу с одбц-шными стейтментами)
С Офисом и не только с Офисом, но еще и с самой операционкой, поставляются только рантайм библиотеки интерфейсов. Никаких примеров, никакой документации, никаких утилит.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос в Excel и SQLServer / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]