Тема: Очень долгое формирование отчёта

Здравствуйте! Есть у меня один отчёт. Формирует и выводит всё как нужно. Только одна проблема. Формируется (именно формируется) невыносимо долго! Выгрузка данных идёт быстро (ну в зависимости от количества данных, конечно :)) а вот когда появляется индикатор формирования отчёта, то комп (достаточно мощный) зависает. Для эксперимента я  даже в гриде фильтрами всё ограничила.... должно вывестись в отчёт всего 2 строчки... Выгрузка данных мгновенная.... а вот формирование отчёта заняло 14 минут. Источник данных - запрос в базе  (кстати, в конструкторе открывается тоже довольно долго) В бланке только номера полей. Очень нервирует, т.к. при большом объёме данных и менее мощном компе получить этот отчёт можно будет очень нескоро! Как разрешить эту проблему?

Re: Очень долгое формирование отчёта

Выполните, пожалуйста, описанные здесь https://forum.technologics.ru/viewtopic.php?id=3 действия и вышлите на указанный в ссылке адрес, либо непосредственно мне. Я постараюсь вам помочь.

Re: Очень долгое формирование отчёта

В дополнение: высылаемые файлы необходимо заархивировать, т.к. система безопасности не пропустит mdb-файлы

(изменено: Парамонова Наталья, 5 февраля 2009 12:53:12)

Re: Очень долгое формирование отчёта

Версия ТКС 5.0.2
Windows XP Professional версия 2002 SP3
MS Office 2003 SP1

Необходимые файлы присоединяю.

Post's attachments

ST_P.zip 346.45 Кб, 2 скачиваний с 2009-02-05 

You don't have the permssions to download the attachments of this post.

Re: Очень долгое формирование отчёта

В вашем отчете масса сохраненных запросов. Все время формирования занимает выполнение запроса "ID", поскольку он составлен крайне не оптимально. Я переписала данный запрос с сохранением количества и порядка следования полей, присовокупив к нему дополнительные поля со значениями Вида оборудования и Группы оборудования. Запрос не использует промежуточных сохраненных запросов. Т.е. в шаблоне набора данных достаточно иметь только его.
Текст запроса прилагаю. В бланках в области "Источник данных" Вместо
Select * From ID2
надо занести запрос, сохраненный в файле ID2.
Вместо
Select * From ID3
надо занести запрос, сохраненный в файле ID3

Post's attachments

ID.txt 3.44 Кб, 8 скачиваний с 2009-02-06 

ID2.txt 145 b, 3 скачиваний с 2009-02-06 

ID3.txt 124 b, 5 скачиваний с 2009-02-06 

You don't have the permssions to download the attachments of this post.

Re: Очень долгое формирование отчёта

Елена, я изменила всё в соответствии с Вашими рекомендациями. Удалила все запросы кроме ID, изменила его, а также источник данных. Отчёт делала на тех же данных, что высылала Вам. Т.е. 2 строчки. Отчёт сформировался  не за 14 минут как было ранее, а за 31 минуту :(  А у вас на моих данных как обстояло дело со временем формирования?

Re: Очень долгое формирование отчёта

У меня формируется очень быстро, секунды.

Re: Очень долгое формирование отчёта

Отчет с вашим запросом у меня формируется за 12 минут. Попробуйте удалить ВСЕ запросы, затем создать новый с новым текстом запроса.

(изменено: Парамонова Наталья, 9 февраля 2009 15:43:36)

Re: Очень долгое формирование отчёта

Я так и сделала. У меня только Ваш вариант ID и больше ни одного запроса кроме него. Но результат плачевный 31 минута, как уже писала выше.

Re: Очень долгое формирование отчёта

Выложите, пожалуйста, то что у вас получилось после исправления отчета.  Вернее отчет, выполненный без макро после. Толко перед выполнением удалите совсем Макро после, у вас там сейчас Start.

(изменено: Парамонова Наталья, 9 февраля 2009 16:45:53)

Re: Очень долгое формирование отчёта

Посмотрите, может, я что-то забыла....
При попытке просто посмотреть этот запрос в выгруженной базе, Аксесс выдаёт ошибку, что не поддерживается выражение объединения, но в тоже время, если делать отчёт с макро и подождать пол часа, в итоге он формируется...

Post's attachments

New.rar 60.12 Кб, 3 скачиваний с 2009-02-09 

You don't have the permssions to download the attachments of this post.

Re: Очень долгое формирование отчёта

"не поддерживается выражение объединения" Access пишет вот по какой причине: При сохранении запроса в базе, Access немного хозяйничает, а именно убирает, с его точки зрения, лишние скобки. Лишними он считает скобки после служебного слова ON(...). Если их восстановить, запрос в выгруженной базе выполняется. Однако при штатном выполнении отчета, все отрабатывает нормально.
Теперь о нашей проблеме:
По всей видимости, чем большее количество таблиц присоединяется в запросе, тем медленнеее он выполняется. В нашем случае таких таблиц получилось больше 20-ти. Предлагаю решить задачу таким способом: ограничиться включением в источник данных информацией об оборудовании, его параметрах и серийных номерах. Значения остальных полей вычислять с помощью запросов в шаблоне строки в области ЗаполнениеСоставаКарты.
Выкладываю новый текст запроса ID и уже отредактированные ваши бланки. Ими можно заменить имеющиеся с помощью кнопки "Загрузить с диска" в режиме редактирования бланка на закладке "Основные"

Post's attachments

Bl.rar 38.5 Кб, 4 скачиваний с 2009-02-10 

ID.txt 990 b, 4 скачиваний с 2009-02-10 

You don't have the permssions to download the attachments of this post.

Re: Очень долгое формирование отчёта

Прошу прощения: в запросе для состояния оборудования 10 месяца надо поправить: вместо ...=1 надо ...=10, а именно

Select P6 From RptSheet3 Where RptSheet3.P4=[Par1] AND Month(RptSheet3.P10)=10
Par1=11

во всех 3-х бланках.

Re: Очень долгое формирование отчёта

Спасибо, Елена. Теперь всё формируется быстро. :)

Re: Очень долгое формирование отчёта

Здравствуйте, Елена. Снова возникла проблема в этом отчёте. Ни с того, ни с сего. Только она какая-то странная... Проявляется только на данных одной ветки классификатора. Суть проблемы в том, что при вызове отчёта выгрузка данных идёт нормально, потом загружается форма для выбора цеха. Если выбрать конкретный цех, то всё ОК. Но если указать "Все цеха", то выдаётся ошибка: Ошибка при выполнении SELECT ID.* FROM ID, CEXA WHERE (VID_OB='Энергетическое') AND IIF(CEXA.CEX='Все цеха',True,CEH_N=CEXA.CEX) ORDER BY CEH_N, GR_OB, NAIM, SN Несоответствие типов данных в выражении условия отбора. А потом следующая ошибка: Операция не допускается, если объект закрыт. После этого загружается отчёт как без макро после, только в нём ещё 2 листа work и комплект документов. Причём, как я уже говорила, это только на одной ветке данных. На других ветках подобной ошибки нет и в помине... Печатает и для всех цехов и для конкретного. Но если встать на  классификатор высшего уровня, куда входит проблемный, то отчёт так же падает с этой ошибкой.
Можете ли Вы что-то подсказать?
Отчёт из режима остатки.

Post's attachments

??????.rar 97.13 Кб, 1 скачиваний с 2009-06-03 

You don't have the permssions to download the attachments of this post.

Re: Очень долгое формирование отчёта

Ваш отчет (без макро после) у меня довыполнился без ошибок со значением "Все цеха". Может вы не из проблемной ветки выгрузили данные? Хотя, если поразмыслить логически, то ветка классификатора тут ни причем, т.к. при выборе конкретного цеха на ней отчет формируется. Это все на одном рабочем месте запускается? Почему спрашиваю: сталкивалась с тем, что на каких-то рабочих местах True не воспринимается, надо писать Истина :) Попробуйте вместо True в запросе написать (1=1), например. Выражение вернет Истину, но в неявном виде.

Re: Очень долгое формирование отчёта

Разобралась я... Ошибка была в данных, а не в отчёте :) Один серийный номер по ошибке содержал символ. В отчёте серийный номер конвертится в числовое значение. Встретив ошибочный серийник, программа не могла его перевести в числовой вид... На этом и проходил сбой...
Извините, что зря побеспокоила

Re: Очень долгое формирование отчёта

Здравствуйте, Елена.
У меня  при попытке открыть сохранённый запрос выдаётся ошибка  "не поддерживается выражение объединения", но сам отчёт отрабатывается нормально. На это вы уже отвечали...

Докучаева Елена пишет:

"не поддерживается выражение объединения" Access пишет вот по какой причине: При сохранении запроса в базе, Access немного хозяйничает, а именно убирает, с его точки зрения, лишние скобки. Лишними он считает скобки после служебного слова ON(...). Если их восстановить, запрос в выгруженной базе выполняется. Однако при штатном выполнении отчета, все отрабатывает нормально.

Но теперь загвоздка в том, что раньше такой запрос можно было открыть в режиме SQL и исправить что-то, а теперь это никак невозможно сделать... Т.е. текст запроса увидеть ни коим образом  не получается :( Как в таком случае принудительно докопаться до текстовки?

Re: Очень долгое формирование отчёта

У меня не получалось в таком случае докопаться. Я, честно говоря, вообще сохраненные запросы предпочитаю не использовать. На бланке их хранить в качестве источника данных, например, как-то надежнее.

Re: Очень долгое формирование отчёта

Удалось обмануть Access таким образом:
Создайте новый запрос:

Select * FROM Ваш_запрос

Сохраните, выполните его. После чего выполнится и Ваш_запрос,  без ругани :)

Re: Очень долгое формирование отчёта

Это то понятно.... Я так делала уже....Это прокатило бы, если мне надо было бы добавить ещё какую-то таблицу и из неё данные тянуть.... Но мне надо именно в том запросе вывести ещё одно поле из таблицы, которая уже включена в этот запрос, и поставить по этому полю условие...
А  если снова цеплять таблицу к запросу из запроса, то даже не знаю, по какому полю её джойнить.... :( Т.к. в том запросе, который не открывается, я не выводила поля для сопоставления на просмотр :(((

Re: Очень долгое формирование отчёта

Вы меня не поняли. Запрос Select * FROM Ваш_запрос выполняет здесь только временную функцию, после того как вы его выполните, его можно будет удалить. Просто его выполнение позволит открыть и отредактировать Ваш_запрос

Спасибо сказали: Парамонова Наталья1

Re: Очень долгое формирование отчёта

А.... :) Понятно... Прокатило....:D Спасибо!

Re: Очень долгое формирование отчёта

И у меня опыта прибавилось :)