Страницы: 1
RSS
Использование ODBC для подключения к SQL Server
 
Имеется ли ограничение на длину ".CommandText" при создании ListObjects? Если переменные <короткие> - работает, < удлиняешь > - Error 13, Type Mismatch. Пробовал изменять MaxBufferSize - не помогло.  
 
   With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _  
       "ODBC;DRIVER=SQL Server;SERVER=" & s_Server_Name & ";UID=" & s_User_ID & ";Pwd=" & s_Password & ";APP=2007 Microsoft Office system;MaxBufferSize=8192;WSID=V-SRV2003;DATABASE=" & s_Database_Name & "" _  
       , Destination:=Range("$A$1")).QueryTable  
       .CommandText = Array( _  
       "SELECT " & v_SQL & " FROM vAllPrS_5Reg" & v_SQL_HL & "_" & v_Year & v_Plan & " " _  
       , " WHERE (PERIOD>=" & v_PeriodFrom & " And PERIOD<=" & v_PeriodTo & ") " _  
       , " " & v_Where_ID & v_Where_StoreB & v_Where_StoreE & " ORDER BY PERIOD")  
       .RowNumbers = False  
       .FillAdjacentFormulas = False  
       .PreserveFormatting = True  
       .RefreshOnFileOpen = False  
       .BackgroundQuery = True  
       .RefreshStyle = xlInsertDeleteCells  
       .SavePassword = True  
       .SaveData = True  
       .AdjustColumnWidth = True  
       .RefreshPeriod = 0  
       .PreserveColumnInfo = True  
       .ListObject.DisplayName = "Table_Query_from_CitiTrends_VG"  
       .Refresh BackgroundQuery:=False  
   End With
vladimir
 
Может через ADO попробовать?
 
Можно использовать ADO в Source при создании .ListObjects? В Help ничего не нашел.  
Пытался создать рекорд сет и скопировать его на лист, но получается без имен полей, а клиент хочет строить из этой выборки Pivot table.
vladimir
 
Вот посмотри, может поможет. где то в просторах интернета скачал. на листе старт - строка подключения  и запрос. Лист main - это тоже самое только под мои нужды и без окошечек.
 
Спасибо!    
В файле примера сгенерированный мной SQL отработал без ошибок, но в моём модуле почему то возникла проблема: пришлось F объявить Object.    
  Dim F As Object 'F As Field  
F As Field - выдавал ошибку: F.Name : <Object variable or With block variable not set>    
 
Ещё раз спасибо!
vladimir
 
{quote}{login=vldmr}{date=26.07.2011 01:02}{thema=Использование ODBC для подключения к SQL Server}{post}Можно использовать ADO в Source при создании .ListObjects? В Help ничего не нашел.  
Пытался создать рекорд сет и скопировать его на лист, но получается без имен полей, а клиент хочет строить из этой выборки Pivot table.{/post}{/quote}  
 
Set rstRecordset = CreateObject("ADODB.Recordset")  
 
With rstRecordset  
.CursorLocation = 3 '''adUseClient  
.Fields.Append "Колличество", adDouble, 10  
.Fields.Append "Сумма", adDouble, 12  
.Fields.Append "Текст", adChar, 50  
.Fields.Append "ЕщеТекст", adChar, 250  
 
 
rstRecordset.Open  
rstRecordset.AddNew  
rstRecordset.Fields(0).Value = "10000"  
rstRecordset.Fields(1).Value = "150"  
rstRecordset.Fields(2).Value = "Что-то"  
rstRecordset.Fields(3).Value = "Еще Что то"  
.Update  
End With  
 
Set objPivotCache = ActiveWorkbook.PivotCaches.Add( _  
   SourceType:=xlExternal)  
Set objPivotCache.Recordset = rstRecordset  
With objPivotCache  
   .CreatePivotTable TableDestination:=Range("A3"), _  
       TableName:="PivotTable1"  
End With  
 
Получаеться кеш для сводной таблицы
 
При переносе в свой модуль - проверьте все ли библиотеки подключены (tools - references). Прилагаю скриншот references того файла, что выкладывал.
Страницы: 1
Наверх