при использовании ADODB увеличивается объем занятой оперативной памяти

m
Дата: 20.11.2009 10:47:39
Добрый день!
Прошу помощи в следующем вопросе.
Делаю запрос из книги Эксель, находясь в ней, используя ADODB Recordset.
Все отрабатывает правильно, но возникает следующая ситуация: с каждым запросом количество оперетивной памяти, выделяемое под Эксель растет неимоверно, не пойму почему. Например после первого запроса, объем памяти где 33 МБ, но после 5го запуска он уже 320 МБ... Понятно что нифига не работает, все висит. Когда выхожу из приложения, память очищается. Вот код:
...
dbConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ActiveWorkbook.FullName & _
";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
Set dbConnection = New ADODB.Connection
dbConnection.Open dbConnectionString
Set rs = New Recordset
rs.Open sQuery, dbConnection, adOpenDynamic
...
dbConnection.Close
Set rs = Nothing
Соеденение закрываю. С объектной переменной снимаю значение.
Что может быть еще? Может весь рекордсет продолжает висеть в оперативке, а это 65000 строк.

Знаю что задача может быть связана с Эксель, но здесь мне уже кучу раз помагали, так что ... :) Да и ситуация, как мне кажется, возникает не из-за экселя, а из-за моего некорректного использования Recordset'a ADODB.
m
Дата: 20.11.2009 11:08:40
Да и еще, сам размер файла увеличился до 9 МБ, и это при том, что заполнены всего то 3 столбца по 65000 строк, и обычно такой файл занимает ну 3 МБ... Читал в нете, та же проблема при использование ADODB, но ответа пока не нашел... Кто что посоветует ?
m
Дата: 20.11.2009 11:20:50
Вопрос снят, нашел описание на сайте Майкрософта.
Перерасход памяти это недоработка Майкрософт, которую они официально признают здесь
m
Дата: 20.11.2009 12:50:44
Если кому интересно, данный вопрос решил через такое (по совету Майкрософт):
sQuery = "INSERT INTO outR IN '' [Excel 8.0;Database=" & "D:\TEMP\smdm" & _
    "\test2.xls] SELECT * FROM myrange"

dbConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ActiveWorkbook.FullName & _
";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
Set dbConnection = New ADODB.Connection
dbConnection.Open dbConnectionString
dbConnection.Execute sQuery

Оказывается вот так просто можно из Экселя отправить информацию в другой источник БД, который распознается Jet'ом.