Scs11Dr1v3 Ответов: 0

Можно ли использовать соединение запроса excel в качестве источника adodb.connection


Добрый день всем,

Я импортировал данные в свою модель данных excel и смог импортировать их обратно на лист с помощью :

Application.CutCopyMode = False
    Application.DisplayAlerts = False
    
    Dim tbl As ListObject
    Dim ws As Worksheet
    
    Set ws = ThisWorkbook.Worksheets.Add
    
    connectionName = fieldName & "sConnection"
    
    With ws.ListObjects.Add(SourceType:=4, Source:=ActiveWorkbook.Connections("Query - 
        TRENDS_GroupData"), Destination:=Range("$A$1")).TableObject
        .WorkbookConnection.OLEDBConnection.CommandText = Array( _
            "Evaluate" & Chr(13) & "" & Chr(10) & "Calculatetable" & Chr(13) & "" & 
             Chr(10) & "(DISTINCT(UNION(" & Chr(13) & "" & Chr(10) & 
             "Distinct(Trends_MyCoData[" & fieldName & "])," & Chr(13) & "" & Chr(10) 
             & "Distinct(Trends_GroupData[" & fieldName & "])" & Chr(13) & "" & 
             Chr(10) & ")))")
        .WorkbookConnection.OLEDBConnection.CommandType = xlCmdDAX
        .RowNumbers = False
        .PreserveFormatting = True
        .RefreshStyle = 1
        .AdjustColumnWidth = True
        .ListObject.DisplayName = fieldName
    End With
    
    Set tbl = ActiveSheet.ListObjects(1)
    tbl.Refresh
В другой книге я использую ADODB.Connection для запроса таблицы на листе с использованием таблицы :
Public Function CreateSQLConnection() As Object
   
    '---Connecting to the Data Source---
    Set CreateSQLConnection = CreateObject("ADODB.Connection")
    With CreateSQLConnection
        .Provider = "Microsoft.Mashup.OleDb.1"
        .ConnectionString = "Data Source=ActiveWorkbook.Connections(""Query - 
         TRENDS_GroupData"");" & _
        "Extended Properties=""Excel 12.0 Xml;HDR=NO"";"
        .Open
    End With

End Function
Эти опции отлично работали, однако теперь я столкнулся с гораздо большим набором данных и задавался вопросом, Можно ли использовать соединение в качестве источника для ADODB.Connection, поскольку до сих пор я не добился успеха.

Ближе всего я подошел к тому, чтобы заставить его работать, выскакивает следующее сообщение :
- Не могу обновить. База данных или объект доступны только для чтения."

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

Любые мысли будут высоко оценены.

Что я уже пробовал:

Изменение режима чтения или adRead
Смена поставщика двигателя или коллажей
Несколько перестановок различных настроек.

CHill60

Когда вы говорите "гораздо больший набор данных", вы превысили ограничения на размеры объектов Excel?

Scs11Dr1v3

Доброе утро CHILL60,

Набор данных значительно превышает 1 000 000 строк данных, что превышает ограничения рабочего листа Excel, однако он все еще находится в пределах возможностей Excels datamodel.

CHill60

Максимальный размер зависит от версии и платформы, ни одна из которых не упоминается, но если вы уверены...
Если бы это был я, я бы экспериментировал, чтобы найти порог, который нарушает модель, или посмотреть, есть ли альтернативный подход к получению MI.

Scs11Dr1v3

Мои извинения, я не подумал упомянуть об этом.

Я работаю в Excel Professional Plus 2016 Версия 1804 сборка 9226.2156

Ничего не ломается и не работает, оба вышеперечисленных метода отлично работают, я бы просто хотел их объединить.

Моя конечная цель состоит в том, чтобы иметь возможность запрашивать модель данных с помощью операторов SQL вместо запроса рабочих листов.

Спасибо Вам за обратную связь

CHill60

Это у меня не тот конец палки - извините. Вот почему этот разговор находится в комментариях а не в решении проблемы :-)

0 Ответов