имеется подключение excel к SQL, которое прекрасно работает, но есть один недостаток, при получении большого ответа (200к+ строк), время на вставку этого ответа, значительно большое (от 5 минут) Код вставки, который я использую - циклы: [vba]
Код
Set oConn = CreateObject("ADODB.Connection") Set oRS = CreateObject("ADODB.Recordset") oConn.Open ******** 'какое- то подключение
oRS.Open "SELECT * FROM Table", oConn 'какой-то запрос
' -- вставка шапки таблицы nCol = 1 For Each fld In oRS.Fields Cells(1, nCol).Value = fld.Name nCol = nCol + 1 Next
'-- вставка тела таблицы oRS.MoveFirst nRow = 2 Do Until oRS.EOF nCol = 1 For Each fld In oRS.Fields Cells(nRow, nCol).Value = fld.Value nCol = nCol + 1 Next oRS.MoveNext nRow = nRow + 1 Loop oRS.Close
[/vba] Возможно ли вставлять не перебором, а как нибудь типа: Range('известный диапазон').value = oRS.Полный_ответ.value Но для этого мне надо сначала получить данные о размерах полученного ответа...
Всем привет.
имеется подключение excel к SQL, которое прекрасно работает, но есть один недостаток, при получении большого ответа (200к+ строк), время на вставку этого ответа, значительно большое (от 5 минут) Код вставки, который я использую - циклы: [vba]
Код
Set oConn = CreateObject("ADODB.Connection") Set oRS = CreateObject("ADODB.Recordset") oConn.Open ******** 'какое- то подключение
oRS.Open "SELECT * FROM Table", oConn 'какой-то запрос
' -- вставка шапки таблицы nCol = 1 For Each fld In oRS.Fields Cells(1, nCol).Value = fld.Name nCol = nCol + 1 Next
'-- вставка тела таблицы oRS.MoveFirst nRow = 2 Do Until oRS.EOF nCol = 1 For Each fld In oRS.Fields Cells(nRow, nCol).Value = fld.Value nCol = nCol + 1 Next oRS.MoveNext nRow = nRow + 1 Loop oRS.Close
[/vba] Возможно ли вставлять не перебором, а как нибудь типа: Range('известный диапазон').value = oRS.Полный_ответ.value Но для этого мне надо сначала получить данные о размерах полученного ответа...TD_MElec
Сообщение отредактировал TD_MElec - Вторник, 05.10.2021, 13:48