Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос работает медленно в Excel / 9 сообщений из 9, страница 1 из 1
26.11.2010, 12:23
    #36978731
FIRUZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос работает медленно в Excel
Доброго времени суток ребята.
В макросе работает запрос, который берет данные из таблицы(с одной таблицы) с Оракла. проблема такая: когда запускаю макрос, первые 3 строки быстро заполняются, но потом заполняется очень медленно, как черепаха ... где-то больше 3 часов, не дожидаясь конца остановил его.
этот же запрос запускаю через PL/SQL, выполняется в течении 13-15 мин.
в чем дело?
...
Рейтинг: 0 / 0
26.11.2010, 13:20
    #36978893
vikttur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос работает медленно в Excel
Подозреваю, что те, кто может помочь, хоте ли бы видеть код.
...
Рейтинг: 0 / 0
26.11.2010, 14:48
    #36979264
FIRUZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос работает медленно в Excel
Извините, вот код:

Sub Connect()
Dim con As ADODB.Connection: Set con = New ADODB.Connection
con.Open "Provider=MSDAORA.1;Password=ro; User ID=ro;Data Source=tttdb; Persist Security Info=True"

Dim b As Integer 'столбцы
For b = 8 To 50 'По столбцам

Dim a As Integer 'строки
For a = 5 To 100 'По строкам

Dim rs As ADODB.Recordset: Set rs = New ADODB.Recordset
Set rs.ActiveConnection = con

Sql = " select"
Sql = Sql & " count(s.sub_id)"
Sql = Sql & " from"
Sql = Sql & " serv_his s"
Sql = Sql & " where s.start_date >= TO_DATE( '" + Cells(1, 1).Text + " 0:00:00', 'dd.mm.yyyy hh24:mi:ss')"
Sql = Sql & " and s.start_date <= TO_DATE( '" + Cells(1, 2).Text + " 23:59:59', 'dd.mm.yyyy hh24:mi:ss')"
Sql = Sql & " and s.user like '" + Cells(2, b).Text + "'"
Sql = Sql & " and s.s_id = '" + Cells(a, 2).Text + "'"
Sql = Sql & " and s.t_id = 4"

rs.Open Sql, con
Cells(a, b).Value = ""
Cells(a, b).CopyFromRecordset rs

Next a
Next b

rs.Close
End Sub




думаю что проблема в самой таблице...
...
Рейтинг: 0 / 0
26.11.2010, 15:15
    #36979373
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос работает медленно в Excel
FIRUZ,

вызов запроса на каждую клетку (а,в) --впечатляет
...
Рейтинг: 0 / 0
26.11.2010, 15:34
    #36979439
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос работает медленно в Excel
ПЕНСИОНЕРКА,

and s.user like '" + Cells(2, b).Text + "'"юзер по фамилии в строке 2, звездочки нет -значит на равенство. хотя скорей нехватает звездочки,,,начиная с 8-50 and s.s_id = '" + Cells(a, 2).Text + "'"по номеру в символьном виде в столбце 1 начиная с 5-100, хотя видимо вид должен быть числовым . вряд ли это строка в базе данных

или что-то недосмотрела
...
Рейтинг: 0 / 0
26.11.2010, 15:35
    #36979443
FIRUZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос работает медленно в Excel
Дело в том что запрос по столбцам идет, сперва 1 столбец потом 2-й и тд.

Sql = Sql & " and s.user like '" + Cells(2, b).Text + "'"

с других таблиц этот же запрос с макросом нормально работает, но вот с этой таблицой
Sql = Sql & " serv_his s" никак не хочет, может быть проблема в самой таблице...
...
Рейтинг: 0 / 0
26.11.2010, 15:40
    #36979464
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос работает медленно в Excel
FIRUZ,

да не заметила сразу
-считается количество
-но отсутствует и сортировка и группировка в запросе

хотя видимо это следствие запроса на каждую ячейку(42*95=4100 запросов)
...
Рейтинг: 0 / 0
26.11.2010, 15:41
    #36979470
FIRUZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос работает медленно в Excel
ах да, это
Sql = Sql & " and s.s_id = '" + Cells(a, 2).Text + "'"
я сам проставляю, оно числовое.

да, для каждого юзера должен заполнится столбец.
...
Рейтинг: 0 / 0
26.11.2010, 15:48
    #36979503
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос работает медленно в Excel
FIRUZ,

итого здесь должен быть
-один перекрестный запрос по фамилиям строки 2
-переносимый по строкам в таблицу

кстати: номера строк 5-100 имеют значение или это просто порядковый номер (может в столбце 2 --наименование работы)

обязательно формировать строку 42 или 98, если их нет в базе данных
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос работает медленно в Excel / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]