запрос агрегации для набора записей в VBA

#vba #ado

#vba #суматоха

Вопрос:

Могу ли я выполнить запрос агрегации для набора записей в VBA. код первой части выглядит следующим образом:

 '' part 1 Set conn = New ADODB.Connection Set rs = New ADODB.Recordset ' Open the connection and execute. conn.Open sConnString Set rs = conn.Execute("SELECT * FROM Table1;") ''' this SQL Statement is a simplified one;the actual one is very complex.   

RS будет отображаться на листе 1; затем я хочу отобразить результат следующего на листе 2:

 select sum(col1), count(*), sum(col2) from  (select * from table1) group by 1,2 order by 1,2  

поскольку rs был получен из базы данных в части 1, я не хочу повторно запускать SQL в базе данных, вместо этого я хочу получить результат части 2 в наборе записей VBA. Я проверяю метод набора записей, он предоставляет только метод подсчета, перемещения и т. Д. Кто-нибудь может мне помочь? Спасибо!

Комментарии:

1. Самым быстрым, скорее всего, будет выполнение агрегирующего запроса. Но если вы настаиваете, выполните цикл набора записей ( rs ), суммируйте значения и подсчитайте записи по мере перехода к массиву. Наконец, отсортируйте массив и передайте значения в Sheet2.

2. Если вы сбросите результат набора записей в Excel, вы также можете создать SQL-запрос к этим данным (но, конечно, вам нужно создать новый объект подключения).

3. Почему вы не используете формулы для агрегирования данных на листе 2?

4. Не будет ли это просто select sum(col1), count(*), sum(col2) from table1 group by 1,2 order by 1,2 , если вы используете select *?