powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
17 сообщений из 17, страница 1 из 1
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
    #39808031
dklim.kzn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый вечер.

Поиском находится масса информации, но можно спросить, какие сейчас моды?)

Раз в секунду (лучше чаще) нужно в открытой книге Excel обновлять таблицу.

На текущий момент находил варианты:
1. Настроенный QueryTable обновлять в самом Excel циклическим макросом
2. Рулить Excel из SQL через вызовы sp_OA*

SSIS пока не топтал, не коннектится почему-то

Что из этого более похоже будет на DDE вывод или может быть есть DDE, которого я не нашел? )

Приклад в итоге будет перевезен в SQL, но пока для ускорения нужен костыль вот такой.
Подскажите плз предпочтительный вариант.
...
Рейтинг: 0 / 0
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
    #39808036
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dklim.kzn,

Зависит от...
Может у вас этот эксель будет открыт все это время. А может закрыт. А может у вас там пару сотен тысяч строк...
...
Рейтинг: 0 / 0
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
    #39808040
dklim.kzn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Критикdklim.kzn,

Зависит от...
Может у вас этот эксель будет открыт все это время. А может закрыт. А может у вас там пару сотен тысяч строк...

Эксель открыт всё время. Там на Calculate макрос работает.
Строк немного, до 100 точно, и недлинные.
В общем-то можно и по sp_OA*
И даже одно значение кидать
Потом в экселе разобрать прямо формулами на листе или типа того

Но если во время не упрусь - то предпочел бы табличку выливать апдейтом или типа того
Фоновое обновление QueryTable в 1 минуту минимум - не устраивает
...
Рейтинг: 0 / 0
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
    #39808042
dklim.kzn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SSIS запустил, пакет создался и отработал
Это он такой неторопливый в SMSS ?
Если вызывать в процедуре - сможет чаще секунды прокручиваться?
...
Рейтинг: 0 / 0
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
    #39808044
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем в этой схеме эксель с какой-то там логикой на макросах, совершенно не понятно.
...
Рейтинг: 0 / 0
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
    #39808048
dklim.kzn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей АлексеевичЗачем в этой схеме эксель с какой-то там логикой на макросах, совершенно не понятно.

абсолютно незачем
и потом эксель будет исключен
но пока нет времени всё переписывать
а эксель с работающими макросами есть

так что мне просто надо ему докинуть поток данных из sql
...
Рейтинг: 0 / 0
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
    #39808050
dklim.kzn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SSIS не пишет в открытую книгу, печалька
а из закрытой данные не выцепляются сами
видимо, через SSIS не стоит
...
Рейтинг: 0 / 0
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
    #39808052
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исключите эксель сразу, не майтесь фигней.
...
Рейтинг: 0 / 0
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
    #39808055
dklim.kzn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей АлексеевичИсключите эксель сразу, не майтесь фигней.

Костылизм не только лишь непобедим, но и полезен в количествах не более двух.

Код: sql
1.
2.
3.
4.
5.
6.
7.
UPDATE OPENROWSET
(           
            'Microsoft.ACE.OLEDB.12.0',
            'EXCEL 12.0; database=C:\X\x.xls',
            'SELECT * FROM [S1$]'
)
set a=3


выполняется в среднем за 0,1с, что в целом радует
но таки предполагает циклический макрос в основной книге в варианте подсасывать туда из закрытой быстро массивом
но всё-же быстрее будет просто брать соединением из основной

а это уже недокостыль и чревато переходом временного варианта в постоянный)))
...
Рейтинг: 0 / 0
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
    #39808056
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каждый волен упарываться по-своему.
...
Рейтинг: 0 / 0
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
    #39808060
dklim.kzn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей АлексеевичКаждый волен упарываться по-своему.

Ой, да

Sqlclr вот еще как замена sp_oa*
...
Рейтинг: 0 / 0
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
    #39808232
redsunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dklim.kzn,

А почему не сделать подключение к таблице sql server прямо из excel, там есть такой функционал, и обновляйте таблицу либо при открытии файла либо по кнопке обновить, если только такое решение вам подходит.
...
Рейтинг: 0 / 0
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
    #39808265
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VBA:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Public Sub GetData
  Dim cn As ADODB.Connection, rs As ADODB.Recordset
  Dim sql As String
  Dim cnt As Variant, idx As Integer
  Set cn = New ADODB.Connection
  cn.ConnectionString = "Provider=SQLOLEDB;Data Source=ServerIPOrName;Initial Catalog=DatabaseName;Trusted_connection=yes;"
  cn.Open
  sql = "SELECT * FROM dbo.myTable"
  Set rs = New ADODB.Recordset
  rs.Open sql, cn
  myWorksheet.Range("A1").CopyFromRecordset rs
End Sub
...
Рейтинг: 0 / 0
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
    #39808736
dklim.kzn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
redsunrisedklim.kzn,

А почему не сделать подключение к таблице sql server прямо из excel, там есть такой функционал, и обновляйте таблицу либо при открытии файла либо по кнопке обновить, если только такое решение вам подходит.

да, видимо, так и придется, но я было бы круто из sql )))

на самом деле в основном для интереса
но сложно, забью, пожалуй

объект создается, а файл не создает, пишет места нет)
хотя учетка уже в админы включена и т.п.

была еще мысль действительно из макроса экселя сообщить серверу телефончик, чтобы тот звонил
то есть одним запросом сообщить свой токен для доступа
чтобы сервер далее сам писал в эту же книгу по этому токену через sp_OAMethod сразу как соберется
иначе возникают вопросы синхронизации и т.п.
ну не сильно критично, но было бы прикольнее


однако, я так и не выудил ole токен, нужный для sp_OAMethod

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Declare PtrSafe Function GetWindowThreadProcessId Lib "User32" (ByVal hwnd As Long, ByRef lpdwProcessId As Long) As LongPtr

Sub a()
  Dim ThreadID As LongPtr
  Dim ProcIdXL As Long

  ProcIdXL = 0
  ThreadID = GetWindowThreadProcessId(GetObject(, "Excel.Application").hwnd, ProcIdXL)

End Sub



с полученным значением SQL сделать ничего не может
видимо, у него свои токены или типа того
в запущенном экселе значение получается 17680, например, а когда SQL сам по sp_OACreate делает - 16711422
...
Рейтинг: 0 / 0
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
    #39808744
dklim.kzn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Руслан Дамирович,

спасибо, это всё можно примерно и через sp_OA*

однако, если книга открыта - то ошибка открытия
если закрыта - то толку нет
она обновляется, а связанные ячейки в открытой книге - нет, даже при пересчете по F9
и, конечно, речи не идет про "автоматически"
а в макросе всё же проще напрямую данные получать, чем из соседней книги обновление запрашивать

хотя само по себе время выполнения и радует, менее 0,1с для одного значения
но как всегда - только для презентаций

Код: sql
1.
2.
3.
4.
5.
6.
7.
UPDATE OPENROWSET
(           
            'Microsoft.ACE.OLEDB.16.0',
            'EXCEL 12.0; database=C:\_dir\_file.xls',
            'SELECT * FROM [S1$]'
)
set a=5
...
Рейтинг: 0 / 0
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
    #39808760
Synoptic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чёт не пойму в чём проблема?
1. Через ADO/DAO получаем данные от сервера, размещаем на листе.
2. Обновляем лист.
3. Пауза
И так по кругу.
...
Рейтинг: 0 / 0
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
    #39808823
dklim.kzn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SynopticЧёт не пойму в чём проблема?
1. Через ADO/DAO получаем данные от сервера, размещаем на листе.
2. Обновляем лист.
3. Пауза
И так по кругу.

это всё vb в самом ёкселе
а была мысль в него писать внешне из sql по ole
но утухла)

так то вроде и п.2 не нужен в списке
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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