20.04.2007, 11:04 | #1 |
Участник
|
Еще вчера вроде работал, седня перестал. Не могу сообразить в чем прикол.
DataPort - OnPreDataPort() CREATE(xlApp); xlApp.Workbooks.Open('E:\Шаблоны\Шаблон ''Реестр работников'''); xlBook := xlApp.ActiveWorkbook; xlSheet := xlApp.ActiveSheet; Выполняет последнюю строчку и сразу вылетает с ошибкой "Операционная система не может найти устройство и каталог для файла . Пожулуста, проверьте, что название устройства, каталога и имя файла корректны." Фишка в том, что последняя строка выполняется нормально. Ставил после нее ERROR(xlSheet.Name) и выводилось имя активного листа и затем приложение закрывалось. Я так думаю что дело не в коде, но в чем дело не могу докумекать. У когонить есть соображения? |
|
20.04.2007, 12:28 | #2 |
Участник
|
Кавычки ессно
|
|
20.04.2007, 12:29 | #3 |
Участник
|
|
|
21.04.2007, 11:12 | #4 |
Участник
|
Информация к размышлению. Перекинул код в Report, заработало как часы... Мамой клянусь, код одинаковый, но в датапорте он не работает.
To IGHG А что с ними? To Fordewind Ну а почему нет? Мне отчет как таковой не нужен, только выгрузка. В Codeunit'е еще не пробовал это закодить, но там вобще все с нуля надо делать: и форму запроса и индикацию и тп. Кроме того, мне нужно выгрузить сложную структуру данных (инфа подтягивается из разных таблиц) и в текстовый файл, и в файл Excel. Зачем писать один и тот же код получения и форматирования значений дважды? В датапорте выгрузка в txt уже риализована, добавить одновременно запись в excel и усе. Печально, но почемуто в датапорте не фурычит код, который фурычит в репорте. Хоть убей не могу понять почему. |
|
21.04.2007, 13:56 | #5 |
Участник
|
Цитата:
Сообщение от smoyk
Информация к размышлению. Перекинул код в Report, заработало как часы... Мамой клянусь, код одинаковый, но в датапорте он не работает.
To IGHG А что с ними? To Fordewind Ну а почему нет? Мне отчет как таковой не нужен, только выгрузка. В Codeunit'е еще не пробовал это закодить, но там вобще все с нуля надо делать: и форму запроса и индикацию и тп. Кроме того, мне нужно выгрузить сложную структуру данных (инфа подтягивается из разных таблиц) и в текстовый файл, и в файл Excel. Зачем писать один и тот же код получения и форматирования значений дважды? В датапорте выгрузка в txt уже риализована, добавить одновременно запись в excel и усе. Печально, но почемуто в датапорте не фурычит код, который фурычит в репорте. Хоть убей не могу понять почему. |
|
22.04.2007, 08:33 | #6 |
Участник
|
To RedFox
Да нет, млин, такой строчки! См. первый пост: последняя строка в тригере DataPort - OnPreDataPort() отрабатывает нормально и после этого он вылетает с ошибкой! |
|
22.04.2007, 15:19 | #7 |
NavAx
|
Может у Вас датапорт к тому же файлу стучаться пытается, который Вы уже экселем открыли?
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
23.04.2007, 10:59 | #8 |
Участник
|
Вот это сообщение
относится не к открываемому экселевскму файлу, а к файлу датапорта (тот, который CurrDataport.FILENAME). Поэтому и в отчете все в порядке. Думаю, надо в эту сторону копать. |
|
23.04.2007, 18:04 | #9 |
Участник
|
А Вы уверены, что путь "Е:\\..." существует и отчет запускает xlApp.Workbooks.Open корректно? Вы уверены что ПК, где запускается приложение, имеет диск Е?
|
|
23.04.2007, 18:40 | #10 |
Участник
|
Еще как вариант. После выполнения, остался висеть как сервис, excel. А при попытке запустить по новому его скрутило. Такое было у меня.
|
|
24.04.2007, 05:13 | #11 |
Участник
|
Спасибо за советы, но увы...
2 Дуд Тады была бы другая ошибка. Но в любом случае, уверен, что нет. 2 Milk А как копать? Как только коментирую эти строки все работает на ура (в смысле датапорт). Т.е. в txt выгружает нормально. Не знаю. 2 RedFox Абсолютно уверен. Как вы видите из кода в моем первом посте, я не создаю ни книги, ни листов. В переменные записываются только активные книга и лист. И как я писал, после последней строчки в триггере DataPort - OnPreDataPort() ставлю ERROR(xlSheet.Name) и мне нормально выводится имя "Реестр работников" того самого листа, что содержится в "Шаблон 'Реестр работников'". Извиняюсь за повтор. Так что файл открывается и загружается, сомнений нет. 2 RobiBaggio Да, так и есть. Очень нездравая фича. Но я ее просек и ручками через диспетчер задач вырубил его. Так что дело опять же не в этом (*неуверенным тоном*). А можт, х.з., и в этом. Но я этот сервис обрубал перед запуском. з.ы. Попутно вопрос, как энти сервис убить? Нехорошо ведь, что он висеть остается? Убить кстати желательно бы и в случае ошибки в датапорте, но это уже наверно незбыточные мечты Обработки исключений насколько я знаю в навике нет. з.з.ы. А ктонибудь вобще в датапорте выгрузку в ексель делал? Можт навик такого в принципе не позволяет? |
|
24.04.2007, 15:03 | #12 |
Участник
|
А вы на всякий случай напишите после этого вашего кода
MESSAGE(CurrDataport.FILENAME) Что-то я подозреваю, что у вас с ним проблема |
|
24.04.2007, 22:54 | #13 |
Участник
|
|
|
25.04.2007, 05:44 | #14 |
Участник
|
To Milk
Хм... Точно. Не в бровь, как говорится, а сразу в глаз. Выдает пустую строку. И в чем прикол? У навика что-то в мозку слетело и он просто глюкнул? Или это я как нить накосячил, сам того не ведая? И что делать вобще? Новый датик сделать и туда код скопировать? To AlexB Спасибо. Я правильно сказал, в случае возникновения ошибки в процессе выполнения этот сервис так и будет висеть? Мне бы в принципе пофигу, при выключении компа он все равно сгинет, но не хорошо это. Непрофессионально после себя в оперативке такой муссор оставлять |
|
25.04.2007, 09:12 | #15 |
Участник
|
Все, разобрался. Потыкал, потыкал и разобрался Свойство UseReqForm установил в No. Сделал это мимоходом, и пошел дальше код править, поэтому и не связал отказ в работе с изменением этого свойства. Короче, лопухнулся конкретно Извиняюсь. И всем спасибо.
|
|