Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
04.12.2010, 19:13
|
|||
---|---|---|---|
Глюк: Планировщик Win7 + VFP9 + Excel |
|||
#18+
Надо под Win7 (64-битная) из планировщика запустить прогу, которая генерит отчет в экселе. Точнее фоксом генерится текстовый файл с табуляциями, потом открывается экселем и форматирование делается. В упрощенном варианте так работает: Код: plaintext 1. 2.
В Win7 у меня права админа, задание тоже подо мной запускается. Просто запускаю - работает. Работает если в настройке задания стоит "Выполнять только для зарегистрированного пользователя" Но стоит переключить на "Выполнять вне зависимости от регистрации пользователя" как начинаются проблемы с экселем: не может открыть текстовый файл (вылетает на .Workbooks.OpenText()). Попробовал на 2-х компах, офисы 2003, 2007, Cron`ом пробовал запускать. Права на папку дал всем кому только можно - не помогает. Никто с такой проблемой не сталкивался? Пример глюка в архиве, если кто повторить захочет. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
06.12.2010, 19:06
|
|||
---|---|---|---|
Глюк: Планировщик Win7 + VFP9 + Excel |
|||
#18+
Dima T, тупой вопрос от пользователя Фокса: а чего сразу не выводить из VFP в Excel? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.12.2010, 07:18
|
|||
---|---|---|---|
Глюк: Планировщик Win7 + VFP9 + Excel |
|||
#18+
дикзайDima T, тупой вопрос от пользователя Фокса: а чего сразу не выводить из VFP в Excel? Посоветуй как без тормозов это сделать? Отчетик ~200 тыс.ячеек занимает. Отдельно каждую ячейку заполнять - тормоза большие. Передавать через буфер обмена тоже не вариант, тормоза в фоксе при сборе всего в переменную (чтобы потом ее в буфер обмена вставить). Наиболее быстрый способ через текстовый файл - и фокс не тормозит и эксель его за несколько секунд открывает и форматирует. PS Вопрос так и не порешался, пока завел спец.пользователя держу его сессию открытой чтоб под ним задание выполнялось. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.12.2010, 10:35
|
|||
---|---|---|---|
Глюк: Планировщик Win7 + VFP9 + Excel |
|||
#18+
Dima TПередавать через буфер обмена тоже не вариант, тормоза в фоксе при сборе всего в переменную (чтобы потом ее в буфер обмена вставить). Наиболее быстрый способ через текстовый файл - и фокс не тормозит и эксель его за несколько секунд открывает и форматирует. Я так понимаю, что текстовый файл формируется через COPY TO, поскольку в противном случае, время создания текстового файла будет сопоставимо со временем создания символьной строки для буфера обмена. Есть еще следующие варианты группового экспорта в Excel 1) ADO RecordSet - в данном случае подключится к таблицам DBF через OLE DB и выполнить запрос, чтобы получить RecordSet. Затем вставить этот RecordSet в Excel через метод Range.CopyFromRecordset(ADORecordSet). Можно и "вручную" заполнять RecordSet, но по времени это несколько медленнее, чем вручную формировать символьную строку для буфера обмена. 2) Вставка массива через ссылочную "дыру" в FoxPro (надо написать специфическую функцию. Были темы в данном форуме). Массив можно сформировать через Select-SQL 3) Можно создать макрос Excel где выполнить прямое подключение к таблицам с заполнением ячеек. PS: Хотя замечание насчет времени - не понятно. Ведь запуск идет через планировщика, т.е. время не настолько критично. Кроме того, 200 тысяч значений довольно быстро формируют символьную строку для буфера обмена. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.12.2010, 10:39
|
|||
---|---|---|---|
Глюк: Планировщик Win7 + VFP9 + Excel |
|||
#18+
Вот собрано несколько вариантов экспорта в Excel, в том числе и через массив Передача в Excel Следует только заметить, что "оптимизировать" передачу через массив, убрав "лишнюю" функцию - не получится. Нужна именно функция и именно в таком виде. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.12.2010, 12:44
|
|||
---|---|---|---|
Глюк: Планировщик Win7 + VFP9 + Excel |
|||
#18+
ВладимирМЯ так понимаю, что текстовый файл формируется через COPY TO, поскольку в противном случае, время создания текстового файла будет сопоставимо со временем создания символьной строки для буфера обмена. Ошибаетесь, ниже пример кода это подтверждающий. Фокс медленно работает с большими строками, причем тормоза нелинейно нарастают по мере увеличения строки. У меня на этом примере в файл пишется в 4 раза быстрее, а если str(j, 10) заменить на str(j, 20) - в 10 раз быстрее. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
По большому счету это к теме топика не относится, т.к. как оказалось что без разницы как формировать отчет, остальные способы тоже не работают, глючит эксель под W7 при запуске из планировщика. Подозреваю что это как-то связано с обновленной системой раздачи прав, только где чего разрешить надо - не нашел пока. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.12.2010, 16:54
|
|||
---|---|---|---|
Глюк: Планировщик Win7 + VFP9 + Excel |
|||
#18+
Вопрос снят. Оказалось все просто: криворукие писатели из MS забыли папку создать C:\Windows\SysWOW64\config\systemprofile\Desktop и если пользователь под кем запускается задание не админ, то ему надо права полные дать на systemprofile с подпапками ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.12.2010, 19:57
|
|||
---|---|---|---|
Глюк: Планировщик Win7 + VFP9 + Excel |
|||
#18+
Dima TОшибаетесь, ниже пример кода это подтверждающий. Фокс медленно работает с большими строками, причем тормоза нелинейно нарастают по мере увеличения строки. У меня на этом примере в файл пишется в 4 раза быстрее, а если str(j, 10) заменить на str(j, 20) - в 10 раз быстрее. Спасибо. По факту даже можно предположить, почему так происходит. Вероятно, долго ищет окончание исходной строки, чтобы пределать к ней окончание. Косвенно это подтверждает тот факт, что заполнение массива происходит почти с той же скоростью, что и запись в файл. Кстати, а кто мешает после формирования текстового файла сразу же загнать его в буфер? Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.12.2010, 21:53
|
|||
---|---|---|---|
|
|||
Глюк: Планировщик Win7 + VFP9 + Excel |
|||
#18+
ВладимирМ, Не, конец строки не ищется. Там каждый раз выделяется новый участок динамической памяти и туда копируется сначала старая строка, а потом и добавляемая :), т.е. все прелести интенсивной работы с кучей ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=41&tablet=1&tid=1584738]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 150ms |
0 / 0 |