powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / данные из sql server в excel
10 сообщений из 10, страница 1 из 1
данные из sql server в excel
    #37227269
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добрый день!

необходимо написать макрос, осуществляющий выгрузку данных из sql server на лист excel (макрос на миф в excel, разумеется)
встроенные средства не получится использовать, т.к. запросы нужно менять от случая к случаю, по сему последние будут формироваться строкой.

помогите, пожалуйста, с примером, ничего подходящего нет под рукой..

ps большая просьба учесть, что я при подключениик БД пишу
1. имя сервера: M2010012000501\SQLEXPRESS
2. учетные сведения
-использовать проверку подлинности Windows

запрос такой:
Код: plaintext
select * from sys_anl.catalog_bank
база называется Bank_RUR

спасибо большое!
...
Рейтинг: 0 / 0
данные из sql server в excel
    #37227338
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
полуофф:
PlanB,
аллергия на "динозавров" ?
...
Рейтинг: 0 / 0
данные из sql server в excel
    #37227347
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот так работает мне бы только с шапкой скопировать... подсобите плиз.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
Sub Add_Results_Of_ADO_Recordset()
'This was set up using Microsoft ActiveX Data Components version 2.8

Dim cnt As ADODB.Connection
Dim rst As ADODB.Recordset
Dim stSQL As String
Dim wbBook As Workbook
Dim wsSheet As Worksheet
Dim rnStart As Range


Const stADO As String = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;" & _
"Initial Catalog=Bank_RUR;" & _
"Data Source=M2010012000501\SQLEXPRESS"
'where
'Initial Catalog        = SQL Database  (Bank_RUR);
'Data Source            = SQL Server    (M2010012000501\SQLEXPRESS)

Set wbBook = ActiveWorkbook
Set wsSheet = wbBook.Worksheets("CS_norm")

With wsSheet
    Set rnStart = .Range("A1")
End With

stSQL = "select * from sys_anl.balance201005 a"

Set cnt = New ADODB.Connection
With cnt
    .CursorLocation = adUseClient
    .Open stADO
    .CommandTimeout =  0 
Set rst = .Execute(stSQL)
End With

'Here we add the Recordset to the sheet from A1
rnStart.CopyFromRecordset rst

'Cleaning up.
rst.Close
cnt.Close
Set rst = Nothing
Set cnt = Nothing

End Sub
ps что знал по ntmt - давно забыл... да и знал я не много :))
...
Рейтинг: 0 / 0
данные из sql server в excel
    #37227348
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотища полуофф:
PlanB,
аллергия на "динозавров" ?да там не понятно ничерта. по опыту, при записи подобного дела через рекордер в 2003 версиях и ниже, после сохранения файлда и последующегго открытия, все коды летят нах... с тех пор предпочитатю не пользовать.
...
Рейтинг: 0 / 0
данные из sql server в excel
    #37227389
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PlanB,
вот так работает мне бы только с шапкой скопировать... подсобите плиз.
"копирование" с "шапкой"
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Dim k As Integer
' ...

With wsSheet
   ' данные бу выгружать начиная со второй строки. В первой бу шапко
    Set rnStart = .Range("A2")
End With

' ...

' названия полей  - в первую строку листа
For k =  0  to rst.Fields.Count - 1 
    wsSheet.Cells( 1 , k+ 1 ).value = rst(k).Name
Next k

' Отформатировать первую строку по вкусу (можно и до выполнения загрузки, можно и вручную)
' ...

'Here we add the Recordset to the sheet from A2 (see above)
rnStart.CopyFromRecordset rst

' ...
...
Рейтинг: 0 / 0
данные из sql server в excel
    #37227443
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ок! спасибо, скукотища!
...
Рейтинг: 0 / 0
данные из sql server в excel
    #37227915
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем пиридумывать велосипед.
используйте стандартные объекты екселя, а именно QueryTable

только надо учесть где она находится. с седьмой версии она переехала с листа в другое место

и кож получится такой (для седьмой версии и выше)

Код: plaintext
1.
2.
    ws.ListObjects( 1 ).QueryTable.CommandType = xlCmdSql
    ws.ListObjects( 1 ).QueryTable.CommandText = "здесь запрос"
    ws.ListObjects( 1 ).QueryTable.Refresh
где ws - требуемый лист(там где находится запрос)
и имена полей тоже будут

для 2003 и ранее, все тоже сам ое, только работаем с объектом
Код: plaintext
ws.QueryTables(номер)
...
Рейтинг: 0 / 0
данные из sql server в excel
    #37231966
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HandKot, как я понял, таблицу надо сначала создать и приаттачить к ней базу, после чего юзать этот код. или как? не очень понял, разжуйте, пожалуста.
...
Рейтинг: 0 / 0
данные из sql server в excel
    #37232929
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да примерно так, только не аттач таблицы, а выбор "внешних данных"
выбираете в меню Данные-Внешние данные и т.д
создается QueryTable

а потом можно с ней делать что хочешь, приведенным кодом
...
Рейтинг: 0 / 0
данные из sql server в excel
    #37233488
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HandKotда примерно так, только не аттач таблицы, а выбор "внешних данных"
выбираете в меню Данные-Внешние данные и т.д
создается QueryTable

а потом можно с ней делать что хочешь, приведенным кодомок, спасибо!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / данные из sql server в excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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