Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сразу 2 подключение в VBA  [new]
Progress
Member

Откуда:
Сообщений: 25
У меня такая задача, есть два таблиц, одна в Excel файле, другой в SQL базе, мне нужно как то их сравнить, как можно в VBA дать сразу два подключение, один к Excel, а другой к базе SQL
Буду признателен за помощь
3 мар 17, 06:20    [20259196]     Ответить | Цитировать Сообщить модератору
 Re: Сразу 2 подключение в VBA  [new]
aleks2
Guest
1. Можно.
2. Можно и сто.
3. В точности так же как одно.
3 мар 17, 06:22    [20259200]     Ответить | Цитировать Сообщить модератору
 Re: Сразу 2 подключение в VBA  [new]
Progress
Member

Откуда:
Сообщений: 25
но с одним запросом получиться сравнить, после того как подключились к базам ?
3 мар 17, 06:27    [20259203]     Ответить | Цитировать Сообщить модератору
 Re: Сразу 2 подключение в VBA  [new]
Massa52
Member

Откуда:
Сообщений: 388
Progress,

Если запрос в VBA - то зачем SQL запрос к Excel таблице - в VBA можно напрямую ломиться в ячейку.
Например(VBA код - скидывает данные с SQL в таблицу):
Sub RunQuery(w As String)
  Dim con As ADODB.Connection
  Dim cmd As ADODB.Command
  Dim rs As ADODB.Recordset
  Dim WSP1 As Worksheet
  Set con = New ADODB.Connection
  Set cmd = New ADODB.Command
  Set rs = New ADODB.Recordset

  Application.DisplayStatusBar = True
  Application.StatusBar = "Contacting SQL Server..."

  Set WSP1 = Worksheets(w)
  WSP1.Activate

  ' Remove any values in the cells where we want to put our Stored Procedure's results.
  Dim rngRange As Range
  Set rngRange = Range(Cells(4, 1), Cells(Rows.Count, 1)).EntireRow
  rngRange.ClearContents

  ' Log into our SQL Server, and run the Stored Procedure
  con.Open "Provider=SQLOLEDB;Data Source=.;Initial Catalog=????;User ID=sa;Password=????;"
  cmd.ActiveConnection = con

  ' Set up the parameter for our Stored Procedure
  ' (Parameter types can be adVarChar,adDate,adInteger)
  cmd.Parameters.Append cmd.CreateParameter("StartDate", adVarChar, adParamInput, 10, Range("G1").Text)
  cmd.Parameters.Append cmd.CreateParameter("EndDate", adVarChar, adParamInput, 10, Range("G2").Text)
  cmd.Parameters.Append cmd.CreateParameter("????", adVarChar, adParamInput, 10, Range("J1").Text)
  cmd.Parameters.Append cmd.CreateParameter("???", adVarChar, adParamInput, 10, Range("J2").Text)
  cmd.Parameters.Append cmd.CreateParameter("???", adInteger, adParamInput, 10, Range("L1").Text)

  Application.StatusBar = "Running stored procedure..."
  cmd.CommandText = "usp_??????"
  Set rs = cmd.Execute(, , adCmdStoredProc)

 ' Copy the results to cell B7 on the first Worksheet
  'Set WSP1 = Worksheets(w)
  'WSP1.Activate
  If rs.EOF = False Then WSP1.Cells(4, 2).CopyFromRecordset rs
    
  rs.Close
  Set rs = Nothing
  Set cmd = Nothing

  con.Close
  Set con = Nothing
  
  Application.StatusBar = "Data successfully updated."
  
  Columns("B:B").Select
  Selection.NumberFormat = "d/m/yyyy h:mm"
  Range("C2").Select

End Sub
3 мар 17, 07:02    [20259223]     Ответить | Цитировать Сообщить модератору
 Re: Сразу 2 подключение в VBA  [new]
Progress
Member

Откуда:
Сообщений: 25
Нет такой вариант не устраивает, так как данные в SQL слишком много, нужно сначала чтоб запрос обрабатывал инфу, потом только скидывать в Excel
3 мар 17, 07:04    [20259224]     Ответить | Цитировать Сообщить модератору
 Re: Сразу 2 подключение в VBA  [new]
Massa52
Member

Откуда:
Сообщений: 388
Progress,

Получается - что VBA запрос должен куды-то сложить данные, потом обработать и потом уже положить в таблицу.
И где такое место имеется в VBA? Я чет не догоняю.
3 мар 17, 07:15    [20259228]     Ответить | Цитировать Сообщить модератору
 Re: Сразу 2 подключение в VBA  [new]
Progress
Member

Откуда:
Сообщений: 25
в Power Query
3 мар 17, 07:17    [20259230]     Ответить | Цитировать Сообщить модератору
 Re: Сразу 2 подключение в VBA  [new]
Progress
Member

Откуда:
Сообщений: 25
вот, получился в power query ) с помощью записи макроса получил код в VBA, сейчас разберусь с кодом, и скину, если кому будет надо )
3 мар 17, 07:23    [20259237]     Ответить | Цитировать Сообщить модератору
 Re: Сразу 2 подключение в VBA  [new]
Massa52
Member

Откуда:
Сообщений: 388
Progress,
Думается мне-что PQ не пережует большой объем данных.
В приведенном выше примере - вызывается ХП - которая принимает параметры из Excel.
Кажется мне - что оптимальней в хранимке фильтрануть(обработать) данные в зависимости от параметров.
3 мар 17, 07:27    [20259241]     Ответить | Цитировать Сообщить модератору
 Re: Сразу 2 подключение в VBA  [new]
online trainings
Member

Откуда:
Сообщений: 1
i have the same doubt please clarify the doubt in more doubts clarify the doubts please visit the site http://www.calfre.com/Hyderabad/l/Oracle-Fusion-HCM-Training/ERPTREE-Pvt-Ltd-/4991/details?cod=9651390
3 мар 17, 13:07    [20260198]     Ответить | Цитировать Сообщить модератору
 Re: Сразу 2 подключение в VBA  [new]
aleks2
Guest
Progress
но с одним запросом получиться сравнить, после того как подключились к базам ?


Можно.
MS Access умеет делать запросы к линкованным таблицам.
Как к родным.
3 мар 17, 13:15    [20260235]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить