Построение локального куба

Мне нужно создать локальный файл .cub для моих клиентов, использующих Excel.

Я собрал некоторый код VB, но он терпит неудачу:

ConnLocation = "LOCATION=C:\test.cub;"
ConnDSN = "SOURCE_DSN=DSN=TEST;UID=test;PWD=pass;"
ConnCreateCube = _
"CREATECUBE=CREATE CUBE [TestCube] (" & _
"DIMENSION [account_code]);"
Connection = CreateObject("ADODB.Connection")
Connection.Provider = "msolap"
Connection.ConnectionString = _
    ConnLocation & _
   ConnDSN & _
ConnCreateCube

Я урезал это до приведенного выше кода и получаю загадочное OLE DB error: OLE DB or ODBC error.", когда пытаюсь его запустить.

Любая помощь по вышеизложенному или предложения по другому подходу к этому были бы очень признательны.


person LenW    schedule 29.04.2009    source источник


Ответы (1)


Свойство DSN строки подключения кажется неправильным:

ConnDSN = "SOURCE_DSN=""DSN=TEST;UID=test;PWD=pass;"""

Обратите внимание на цитаты.

Я бы порекомендовал небольшое изменение кода, чтобы сделать его более интуитивно понятным и отказоустойчивым:

ConnLoc = "C:\test.cub"
ConnDSN = "DSN=TEST;UID=test;PWD=pass"
ConnSQL = "CREATE CUBE [TestCube] (DIMENSION [account_code])"

Connection = CreateObject("ADODB.Connection")
Connection.Provider = "msolap"
Connection.ConnectionString = "LOCATION=""" & ConnLoc & """;" & _
                              "SOURCE_DSN=""" & ConnDSN & """;" & _
                              "CREATECUBE=""" & ConnSQL & """;"
person Tomalak    schedule 29.04.2009
comment
Я все еще получаю странную ошибку OLE DB: ошибка OLE DB или ODBC. - DSN функционирует и может использоваться из других инструментов. Не совсем уверен, что ошибка может быть. Спасибо за более аккуратный синтаксис, он делает его более читабельным. - person LenW; 29.04.2009
comment
Хм... Больше ничего не сказано? При поиске в Google эти ошибки часто появляются с добавленным описанием. Это исключение? Может быть, трассировка стека расскажет вам больше? - person Tomalak; 29.04.2009
comment
Ошибка действительно неясна и мало что говорит о том, что происходит - например. код ошибки -2147467259 ? У вас есть ссылки, которые могут мне помочь? - person LenW; 29.04.2009
comment
-2147467259 — это 0x80004005, что для меня немного похоже на отказ в доступе. - person Tomalak; 29.04.2009