Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2015, 22:26   #1
RISagitov
Форумчанин
 
Регистрация: 19.05.2012
Сообщений: 237
По умолчанию Возможно ли значение ADODB.Recordset закинуть в тип Range?

вот у меня код,

Код:
    'Declare variables'
        Set objMyConn = New ADODB.Connection
        Set objMyCmd = New ADODB.Command
        Set objMyRecordset = New ADODB.Recordset

    'Open Connection'
        'objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=localhost;User ID=abc;Password=abc;"
        objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=172.19.1.105;User ID=sa;Password=stat_login654;"
        objMyConn.Open
'        objMyConn.Close

    'Set and Excecute SQL Command'
        Set objMyCmd.ActiveConnection = objMyConn
'        objMyCmd.CommandText = "select * from myTable"
        
        objMyCmd.CommandText = "select * from biis.dbo.traffic_history"
        
        
        objMyCmd.CommandType = adCmdText
        objMyCmd.Execute

    'Open Recordset'
        Set objMyRecordset.ActiveConnection = objMyConn
        objMyRecordset.Open objMyCmd

    'Copy Data to Excel'
        ActiveSheet.Range("A1").CopyFromRecordset (objMyRecordset)
как видите мне приходится результат Рекордсета вначале ложить в лист excel
и только потом от туда копировать в переменную типа Range

как нибудь наверное можно делать это на прямую?

чтоб функция типа range возвращала таблицу

Последний раз редактировалось Stilet; 11.10.2015 в 16:51.
RISagitov вне форума Ответить с цитированием
Старый 11.10.2015, 00:55   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Вы заблуждаетесь относительно Range
Range - это не массив, это группа ячеек какого-то листа
как только Вы переменной типа Range присвоили конкретное значение
Set MyRange = ...
она имеет родителя - это определенный лист посмотреть его можете так:
MsgBox MyRange.Parent.Name

не понимаю куда Вы хотите пристроить Recordset
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 11.10.2015, 12:07   #3
Watcher_1
Форумчанин
 
Аватар для Watcher_1
 
Регистрация: 22.06.2011
Сообщений: 325
По умолчанию

На сколько я знаю objMyRecordset идет как массив
И в нем можно перебирать элементы objMyRecordset(Index)
Заказать макрос можно на сайте http://excel4you.ru/
Watcher_1 вне форума Ответить с цитированием
Старый 11.10.2015, 13:26   #4
RISagitov
Форумчанин
 
Регистрация: 19.05.2012
Сообщений: 237
По умолчанию

спасибо, я понял что нужен не тип range
раз он привязан к конкретному листу в книге

суть такая, что мне нужна функция, возвращающая табличный результат из OLEDB запроса

array не подойдет, т к. возникнет другая проблема с типами

видимо самый простой способ это использовать скрытый лист, как временный буфер

либо тот который предложите Вы
RISagitov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Значение ADODB.Recordset в тип Range RISagitov Microsoft Office Excel 0 10.10.2015 22:25
ADODB::Recordset - не могу разобраться с обращением к полученным полям данных Vit2010 C/C++ Базы данных 1 25.12.2011 11:22
ADODB Connection, RecordSet и временные таблицы AdrenalinE Microsoft Office Access 12 11.04.2011 22:24
Тип переменной Recordset Insightful Microsoft Office Access 6 23.04.2010 15:10
не создать набор запесей (ADODB.Recordset) МаМи Microsoft Office Access 1 22.02.2010 11:19