Страница 1 из 1
Как подключиться к БД используя VBA Excel 2003
Добавлено: 06 апр 2009, 14:21
MasterV
Здравствуйте! Такой вопрос. Из Галактики 7.11 конвертировал в Excel отчет, но с БД необходимо вытащить некоторые значения. Как написать запрос к БД используя макрос?
Добавлено: 06 апр 2009, 14:22
PViP
через драйвер odbc, я так понимаю подобие ADO компонентов в VBA есть.
Добавлено: 06 апр 2009, 14:27
MasterV
PViP, а поконкретнее можно? Где, что найти. Я просто первый раз с этим столкнулся.
Добавлено: 06 апр 2009, 14:31
ilshat
вам пример что ли выслать?
Добавлено: 06 апр 2009, 14:32
MasterV
если есть возможность, то вышлите
Добавлено: 06 апр 2009, 15:44
PViP
Конкретный галактический пример не подскажу, а вот примеров в стандартном help-е от Excel.VBA полно ищите в нем объект Connection или функцию SQLOpen/SQLExecQuery/SQLClose
вьюшку может в отчете сделать, конвертировали в Excel, это что значит?
Добавлено: 06 апр 2009, 17:49
ilshat
Код: Выделить всё
Sub GetData()
'
' GetData Макрос
' Выгрузка из Галактики (*)
'
' Сочетание клавиш: Ctrl+g
'
Dim strSQLstmt As String
strSQLstmt = "select " & _
"from " & _
" build.dbo.[t$katsopr] katsopr " & _
"where " & _
" katsopr.[f$DSOPR] >= dbo.ToAtlDate(convert(datetime,'" & Range("E3").Value & "',104)) and katsopr.[f$DSOPR] <= dbo.ToAtlDate(convert(datetime,'" & Range("F3").Value & "',104)) " & _
" and katsopr.f$tipsopr = 2 " & _
Range("B6:Y65000").Clear
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=Build;APP=Microsoft Office;WSID=PROGSECT;DATABASE=Build;Trusted_Connection=Yes" _
, Destination:=Range("B6"))
.CommandText = strSQLstmt
.Name = "Build"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = False
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = False
.Refresh BackgroundQuery:=False
End With
End Sub
ну что-то типа этого
Добавлено: 07 апр 2009, 05:54
Алексей
А не проще сразу при формировании отчета в эксель необохдимыми данными отчет добить?
Добавлено: 07 апр 2009, 11:01
MasterV
ilshat, спасибо! Попробуем
Добавлено: 02 июл 2009, 11:28
Helysq
Тоже простой пример:
Код: Выделить всё
Private Sub btnExec_Click()
Const brow = 6
Const bcol = 1
Dim cngal As New ADODB.Connection
Dim cdgal As New ADODB.Command
Dim rsgal As New ADODB.Recordset
Dim constr As String
Dim sqlstr As String
constr = "server=GalServ;Database=GalBase;trusted_connection=yes"
' Получение данных с помощью перекрестного запроса
sqlstr = "текст запроса или вызов хранимой процедуры"
' Подключение к серверу
cngal.Provider = "sqloledb"
cngal.CommandTimeout = 0
cngal.ConnectionTimeout = 0
cngal.Open constr
' Получение данных из Галактики
Set cdgal.ActiveConnection = cngal
cdgal.CommandText = sqlstr
cdgal.CommandTimeout = 0
rsgal.MaxRecords = 0
rsgal.CursorType = adOpenStatic
rsgal.LockType = adLockReadOnly
Set rsgal = cdgal.Execute
' Вывод данных основного запроса
Cells(brow, bcol).CopyFromRecordset rsgal
' Завершаем соединение
rsgal.Close
cngal.Close
Set rsgal = Nothing
Set cngal = Nothing
Application.ActiveWorkbook.Save
End Sub