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

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

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

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

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

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

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

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

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

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

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

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

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

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

Код: 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
30.04.2019, 00:52
    #39808056
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
Каждый волен упарываться по-своему.
...
Рейтинг: 0 / 0
30.04.2019, 01:18
    #39808060
dklim.kzn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
Гавриленко Сергей АлексеевичКаждый волен упарываться по-своему.

Ой, да

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

А почему не сделать подключение к таблице sql server прямо из excel, там есть такой функционал, и обновляйте таблицу либо при открытии файла либо по кнопке обновить, если только такое решение вам подходит.
...
Рейтинг: 0 / 0
30.04.2019, 12:39
    #39808265
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
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
01.05.2019, 11:28
    #39808736
dklim.kzn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
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
01.05.2019, 11:57
    #39808744
dklim.kzn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
Руслан Дамирович,

спасибо, это всё можно примерно и через 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
01.05.2019, 12:24
    #39808760
Synoptic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
Чёт не пойму в чём проблема?
1. Через ADO/DAO получаем данные от сервера, размещаем на листе.
2. Обновляем лист.
3. Пауза
И так по кругу.
...
Рейтинг: 0 / 0
01.05.2019, 13:57
    #39808823
dklim.kzn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трансляция/высокочастотное обновление таблицы из MSSQL в Excel
SynopticЧёт не пойму в чём проблема?
1. Через ADO/DAO получаем данные от сервера, размещаем на листе.
2. Обновляем лист.
3. Пауза
И так по кругу.

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

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


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