AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.05.2007, 09:56   #1  
Iris! is offline
Iris!
Участник
 
3 / 10 (1) +
Регистрация: 07.05.2007
Thumbs up
Фрагмент класса на выгрузку данных из AXAPTA в DBF
{
lp = new LoginProperty();
lp.setDSN('Файлы dBASE');
lp.setOther('DefaultDir='+filePath);

c = new OdbcConnection(lp);
s = c.createStatement();

s.executeUpdate("create table "+ FileName
+" (IdTable int, RecordId int, DataOtgr char(10), DataDog char(10), ClientFull char(64), Osnov char(20),"
+ " DogFull char(48),DogPost char(32),DogPostNum char(32), ContrAttr char(64), AppndAttr char(64), CurrName char(20),"
+ " VidReal int, FullFrom char(64),SKLADFROM char(20), FullTo char(64), SKLADTO char(20), UkeyTMC int, FullGoods char(32), FullGoods1C char(70), "
+ " Volume real, Price real, APPPrice real, NDS real, ClientInn char(14), InnTO char(14),InnFROM char(14), VidTov char(1) , VidOtgr char(20), NumNakl char(20), DogVzaimR char(60), Pril int, Type45 int )" );

}
Проблема в том, что если вызывать этот класс из AXAPTA вручную - работает, путем вызова из командной строки - работает, если запускать через SQL job - не проходит c = new OdbcConnection(lp) - процесс просто виснет и ничего дальше не делает. Права во всех случаях одинаковые.Может кто знает, в чем может быть проблема?
Старый 07.05.2007, 11:09   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Iris Посмотреть сообщение
Может кто знает, в чем может быть проблема?
Пусть содержит бэкслэш "\".
В Аксапте этот символ является специальным.
Для того, чтобы записать бэкслэш в Аксапте его надо удваивать.

Неправильно записанный в Аксапте путь str path = "c:\folder\db.dbf";
Правильно записанный в Аксапте путь str path = "c:\\folder\\db.dbf";
__________________
полезное на axForum, github, vk, coub.
Старый 07.05.2007, 11:50   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
А что имеется в виду под SQL job?
Вы запускаете через бизнесс коннектор?
__________________
Axapta v.3.0 sp5 kr2
Старый 07.05.2007, 15:03   #4  
Владимир Максимов_imported is offline
Владимир Максимов_imported
Участник
 
33 / 10 (1) +
Регистрация: 20.01.2004
Следует еще учитывать тот факт, что имена стандартных DSN в разной локализации могут называться по разному. На разных языках.

Вы использовали имя "Файлы dBASE". Но если система англоязычная (а сервера обычно именно англязычные), то тот же самый DSN будет называться уже по английски "Files dBASE". Т.е. Вы просто не найдете нужного DSN.

Чтобы избежать подобных недоразумений, лучше писать напрямую строку соединения, не используя DSN. Но стандартный драйвер ODBC Microsoft dBase Driver (*.dbf) не поддерживает команду CREATE TABLE. Будет сообщение о недопустимой команде.

Лично я использую такую стратегию:

1) Любым способом создается пустой файл DBF нужной структуры. Вне Axapta.
2) Этот образцовый файл DBF кладется в специальную сетевую папку, доступную для всех пользоватиелей
3) Когда необходимо импортировать данные в DBF, "образцовый" файл копируется в указанную пользователем директорию и наполняется стандартынми командами INSERT-SQL
Старый 07.05.2007, 17:59   #5  
Iris! is offline
Iris!
Участник
 
3 / 10 (1) +
Регистрация: 07.05.2007
2Mazzy - пути все с двойными слешами, проверяла. Спасибо.
2AndyD - job настроенный на MS SQL Server.
2Владимир - запускала все из командной строки этого самого сервере, работает. Т.е. класс впринципе рабочий. Через планировщик Windows все тоже отрабатыет. А вот при попытке запуска с помощью SQL Server Agent класс виснет именно при создании подключения к DSN. Запуск из командной строки и SQL Job под одним и тем же пользователем, так что проблема с правами исключена.

Я в тупике, не знаю что делать
Старый 08.05.2007, 16:24   #6  
Iris! is offline
Iris!
Участник
 
3 / 10 (1) +
Регистрация: 07.05.2007
Разобралась, но ситуация странная.
Дело в подключении к DSN на сетевом диске. Именно на этом месте происходил затык при запуске класса через SQL job. Поменяла путь на локальный - все работает.
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:31.