|
Глюк: Планировщик Win7 + VFP9 + Excel
|
|||
---|---|---|---|
#18+
Надо под Win7 (64-битная) из планировщика запустить прогу, которая генерит отчет в экселе. Точнее фоксом генерится текстовый файл с табуляциями, потом открывается экселем и форматирование делается. В упрощенном варианте так работает: Код: plaintext 1. 2.
В Win7 у меня права админа, задание тоже подо мной запускается. Просто запускаю - работает. Работает если в настройке задания стоит "Выполнять только для зарегистрированного пользователя" Но стоит переключить на "Выполнять вне зависимости от регистрации пользователя" как начинаются проблемы с экселем: не может открыть текстовый файл (вылетает на .Workbooks.OpenText()). Попробовал на 2-х компах, офисы 2003, 2007, Cron`ом пробовал запускать. Права на папку дал всем кому только можно - не помогает. Никто с такой проблемой не сталкивался? Пример глюка в архиве, если кто повторить захочет. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2010, 19:13 |
|
Глюк: Планировщик Win7 + VFP9 + Excel
|
|||
---|---|---|---|
#18+
Dima T, тупой вопрос от пользователя Фокса: а чего сразу не выводить из VFP в Excel? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2010, 19:06 |
|
Глюк: Планировщик Win7 + VFP9 + Excel
|
|||
---|---|---|---|
#18+
дикзайDima T, тупой вопрос от пользователя Фокса: а чего сразу не выводить из VFP в Excel? Посоветуй как без тормозов это сделать? Отчетик ~200 тыс.ячеек занимает. Отдельно каждую ячейку заполнять - тормоза большие. Передавать через буфер обмена тоже не вариант, тормоза в фоксе при сборе всего в переменную (чтобы потом ее в буфер обмена вставить). Наиболее быстрый способ через текстовый файл - и фокс не тормозит и эксель его за несколько секунд открывает и форматирует. PS Вопрос так и не порешался, пока завел спец.пользователя держу его сессию открытой чтоб под ним задание выполнялось. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2010, 07:18 |
|
Глюк: Планировщик 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:35 |
|
Глюк: Планировщик Win7 + VFP9 + Excel
|
|||
---|---|---|---|
#18+
Вот собрано несколько вариантов экспорта в Excel, в том числе и через массив Передача в Excel Следует только заметить, что "оптимизировать" передачу через массив, убрав "лишнюю" функцию - не получится. Нужна именно функция и именно в таком виде. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2010, 10:39 |
|
Глюк: Планировщик 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, 12:44 |
|
Глюк: Планировщик Win7 + VFP9 + Excel
|
|||
---|---|---|---|
#18+
Вопрос снят. Оказалось все просто: криворукие писатели из MS забыли папку создать C:\Windows\SysWOW64\config\systemprofile\Desktop и если пользователь под кем запускается задание не админ, то ему надо права полные дать на systemprofile с подпапками ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2010, 16:54 |
|
Глюк: Планировщик Win7 + VFP9 + Excel
|
|||
---|---|---|---|
#18+
Dima TОшибаетесь, ниже пример кода это подтверждающий. Фокс медленно работает с большими строками, причем тормоза нелинейно нарастают по мере увеличения строки. У меня на этом примере в файл пишется в 4 раза быстрее, а если str(j, 10) заменить на str(j, 20) - в 10 раз быстрее. Спасибо. По факту даже можно предположить, почему так происходит. Вероятно, долго ищет окончание исходной строки, чтобы пределать к ней окончание. Косвенно это подтверждает тот факт, что заполнение массива происходит почти с той же скоростью, что и запись в файл. Кстати, а кто мешает после формирования текстового файла сразу же загнать его в буфер? Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2010, 19:57 |
|
Глюк: Планировщик Win7 + VFP9 + Excel
|
|||
---|---|---|---|
#18+
ВладимирМ, Не, конец строки не ищется. Там каждый раз выделяется новый участок динамической памяти и туда копируется сначала старая строка, а потом и добавляемая :), т.е. все прелести интенсивной работы с кучей ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2010, 21:53 |
|
|
start [/forum/topic.php?fid=41&fpage=84&tid=1584738]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 282ms |
total: | 398ms |
0 / 0 |