|
1 / 1 / 2
Регистрация: 18.12.2013
Сообщений: 239
|
||||||
Оптимизация кода19.03.2014, 07:58. Показов 2144. Ответов 24
Метки нет (Все метки)
Уважаемые специалисты, ниже я привел код, который работает, но отрабатывает очень длительное время.
Возможно ли как то его оптимизировать, что бы код отрабатывался быстрее. Пояснения к коду: - Обработка ошибки в коде необходима, если один или несколько файлов "Фирма.." открыт в данный момент в монопольном режиме другим сотрудником. - Приведение к правильному ЦФО необходимо, так как в каждом файле наименование магазина указывается по разному, а мне необходимо в сводной таблице единые наименования (Повлиять на правила заполнения исходных файлов нет возможности) Скрин справочника для примера во вложении Есть предположение, что можно не очищать каждый раз сводную таблицу с приказами, а обновлять данные, но ускорит ли это выполнение процедуры я не знаю. Есть желание рассмотреть предложения и развиваться в правильную сторону, заранее спасибо.
0
|
||||||
| 19.03.2014, 07:58 | |
|
Ответы с готовыми решениями:
24
Оптимизация кода
Упрощение и оптимизация кода |
|
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,083
|
|||||||||||
| 19.03.2014, 08:52 | |||||||||||
|
Мои ИМХО:
Сократите, будет легче читаться.
Может вместо перебора файлов лучше будет их слить в один массив? Так будет быстрее в 15 раз.
1
|
|||||||||||
|
4089 / 1469 / 401
Регистрация: 07.08.2013
Сообщений: 3,672
|
||||||
| 19.03.2014, 09:25 | ||||||
|
точно - читаться будет легче
1
|
||||||
|
163 / 27 / 1
Регистрация: 09.06.2008
Сообщений: 50
|
|
| 19.03.2014, 09:49 | |
|
Мне не до конца понятен смысл такой логики работы. Количество xls таблиц у Вас фиксированное, формат таблиц, как я понял, тоже. Почему не сделаете каждому индивидуальную базёнку аксессную, чтобы они в них колупались? Ведь можно сделать и так, чтобы от экселя практически не отличалось. Это формализует каждый файл, исключит много ошибок ввода и позволит делать синхронизацию имеющихся данных.
Если это экспорт из какой-то внешней системы, почему они работают в них монопольно? Даже если не менять способ организации работы, можно же просто однократно подключить все эти файлы, как внешние таблицы и в них пользоваться запросами, а не делать каждый раз TransferDatabase. А так, самое длительное что у Вас происходит, это естественно, создание экземпляра экселя. Зачем Вы его создаете для каждого файла? Создайте один раз перед началом цикла и закройте по окончанию. Да и сам способ организации цикла Perebor ОЧЕНЬ странный! Имхо, и вообще это Индусский код какой-то.
1
|
|
|
1 / 1 / 2
Регистрация: 18.12.2013
Сообщений: 239
|
|
| 19.03.2014, 09:50 [ТС] | |
|
snipe спасибо, но наименование файлов не Фирма1, Фирма2, там разные наименования, указано так только для примера. Сорри если ввел в заблуждение.
Rube, а как слить данные всех файлов в массив? Можете привести пример? если честно, то я думал что метка NoErr: относится к обязательным функции при обработке ошибок
0
|
|
|
26827 / 14507 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
||||||
| 19.03.2014, 09:50 | ||||||
|
Помимо уже высказанного..
На первый взгляд есть много не самых эффективнных решений. Но только в экспериментах можно проверить применимость иных вариантов. Например, создать временную таблицу куда помещать значения обновляемого поля и условия для него. В коде создать рекордсет для временной таблицы и записывать в него значения. А затем одним запросом обновить таблицу на основе временной таблицы. Но есть одно, что безусловно увеличивает время выполнения: в коде много раз используется объектная переменная текущей базы данных CurrentDb. Использование вместо нее копии, даст выигрыш во времени
1
|
||||||
|
1 / 1 / 2
Регистрация: 18.12.2013
Сообщений: 239
|
|
| 19.03.2014, 09:54 [ТС] | |
|
Сорри, понял про массив. Добавлять в сводную не по частям, а сначала создаем таблицы , потом разом заносим их в сводную. Так, сокращаем 15 раз, правильно?
0
|
|
|
4089 / 1469 / 401
Регистрация: 07.08.2013
Сообщений: 3,672
|
||||||
| 19.03.2014, 10:01 | ||||||
|
можно одним запросом
например так
1
|
||||||
|
163 / 27 / 1
Регистрация: 09.06.2008
Сообщений: 50
|
||
| 19.03.2014, 10:05 | ||
1
|
||
|
4089 / 1469 / 401
Регистрация: 07.08.2013
Сообщений: 3,672
|
|
| 19.03.2014, 10:20 | |
|
ага - заметил
может тогда лучше создать связанные таблицы с файлами excel и пусть юзеры мучают xls а тут останется только сдернуть инфу Добавлено через 5 минут тогда половина кода отвалится как не нужная
1
|
|
|
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,083
|
|||||||
| 19.03.2014, 10:32 | |||||||
|
Кликните здесь для просмотра всего текста
1
|
|||||||
|
138 / 29 / 2
Регистрация: 24.09.2013
Сообщений: 59
|
|||||||
| 19.03.2014, 10:47 | |||||||
Что долго выполняется, то и оптимизируй...
1
|
|||||||
|
1 / 1 / 2
Регистрация: 18.12.2013
Сообщений: 239
|
|
| 19.03.2014, 11:20 [ТС] | |
|
Перенести все данные и заставить заполнять соттрудников в Accesse не получится, об этом я написал в первом посте.
При связывании с файлом открытым другим сотрудником монопольно ничего не выйдет.
0
|
|
|
1 / 1 / 2
Регистрация: 18.12.2013
Сообщений: 239
|
|
| 19.03.2014, 11:26 [ТС] | |
|
Вот скрин того что получиться при связывании.
0
|
|
|
4089 / 1469 / 401
Регистрация: 07.08.2013
Сообщений: 3,672
|
|
| 19.03.2014, 11:39 | |
|
Тогда скопировать себе
а потом уж прилинковать
1
|
|
|
1 / 1 / 2
Регистрация: 18.12.2013
Сообщений: 239
|
||||||
| 19.03.2014, 11:44 [ТС] | ||||||
|
Странно но 8 секунд выполняется вот этот код
0
|
||||||
|
163 / 27 / 1
Регистрация: 09.06.2008
Сообщений: 50
|
|||
| 19.03.2014, 11:44 | |||
|
К тому же, абсолютно себе не представляю, как можно открыть Excel файл монопольным доступом. Может научите? Монопольный доступ был когда-то у dbf-ных таблиц. Да и то, там нужно было специальную галочку ставить.
1
|
|||
|
1 / 1 / 2
Регистрация: 18.12.2013
Сообщений: 239
|
|
| 19.03.2014, 11:47 [ТС] | |
|
Если файл Excel не с общим доступом, то при условии что он открыт другим сотрудником, вам будет предложено открыть его только для чтения. Именно в таком случае связать этот файл не получиться. Ав этих файлах постоянно сидят кадровики.
Каждый раз копировать себе с сервера 15 таблиц, а потом связывать? Представтье краткую инструкцию для пользователя? " Скопируйте себе на рабочий стол все файли из папки .......... и т.д. ..........."
0
|
|
|
4089 / 1469 / 401
Регистрация: 07.08.2013
Сообщений: 3,672
|
||||||
| 19.03.2014, 11:52 | ||||||
Сообщение было отмечено mserg1972 как решение
Решение
скопировать можно вот так
1
|
||||||
|
1 / 1 / 2
Регистрация: 18.12.2013
Сообщений: 239
|
||||||
| 19.03.2014, 14:18 [ТС] | ||||||
|
Разобрался.
Добавлено через 6 минут Ок, спасибо, попробую применить предложенные варианты и посмотреть , что получиться. Добавлено через 2 часа 18 минут Вот этот код выполняется 12 секунд, его можно ускорить? Внес вроде все изменения правильно.
0
|
||||||
| 19.03.2014, 14:18 | |
|
Помогаю со студенческими работами здесь
20
Оптимизация кода запроса в Access 2010
Оптимизация методом Ньютона (нахождение точки минимума). Оптимизация кода Оптимизация кода. Замер времени выполнения части кода. Типы оптимизация: черная оптимизация, серая оптимизация и белая оптимизация Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|