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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.05.2005, 16:55   #1  
Dimitry is offline
Dimitry
Участник
 
172 / 10 (1) +
Регистрация: 07.02.2003
проблема с ADO
По поиску нашел похожие тему, но так и не разобрался.

Пытаюсь открыть dbf и на строчке кода
cn.open("Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq="+_str+";");

вываливает следующее:

Метод 'execute' в COM-объекте класса 'ADODB.Command' возвратил код ошибки 0x80040E37 (<неизвестно>), который означает: [Microsoft][Драйвер ODBC dBase] Объект '.DBF' не найден ядром базы данных Microsoft Jet. Проверьте существование объекта и правильность имени и пути.


Помогите.
Старый 16.05.2005, 17:13   #2  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Вы уверены, что на этой строчке?
Может все-таки на строчке с использованием CCADOCommand?
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 16.05.2005, 17:15   #3  
Dimitry is offline
Dimitry
Участник
 
172 / 10 (1) +
Регистрация: 07.02.2003
Уверен.... Дебагер выдал.
Старый 16.05.2005, 17:19   #4  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Какого класса объект cn?

Вообще, постройте Connection String с помощью, например, MS Excel, а потом скопируйте себе в приложение.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 16.05.2005, 17:20   #5  
Dimitry is offline
Dimitry
Участник
 
172 / 10 (1) +
Регистрация: 07.02.2003
А все сработало.... прошу прощения....
Старый 16.05.2005, 17:21   #6  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,273 / 3466 (122) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Дык это.... не путайте мух с котлетами ... Строчка Driver={Microsoft dBASE Driver (*.dbf)}; от ODBC, и она ессно не соответствует строчке OLEDB, которую ожидает увидеть ADO.
Совет. Создайте файлик с расщирением .UDL и щелкните по нему. Это своеобразный конструктор строк подключения для OLEDB (и соотв ADO). После контруирования, внутри файлика (он текстовый) будет лежать нужная строчка.
Нюанс. Теоретически, за подключение к .DBF отвечает драйвер Jet (Microsoft Jet OLE DB Provider). Однако там можно указать только путь к базе Access (.MDB)
Варианты решения:
1. Попробовать указать в поле путь - путь к каталогу, где лежит (лежат) DBF-ник(и). В этом случае имя таблицы будет соответствовать имени файла. По такой схеме работает драйвер Jet из под Access и SQL Server. Однако в данном случае я не пробовал
2. Отказаться от ADO. Делать через ODBC (класс ODBCConnection). Однако в этом случае необходимо иметь уже созданный ODBC (просто драйвер задать не удастся. Можно конечно изменить драйвер у уже созданного ODBC, однако это уже извращение)
За это сообщение автора поблагодарили: Logger (3).
Старый 16.05.2005, 17:22   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,273 / 3466 (122) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Ну значит совет используйте просто - как некую базу знаний
Старый 18.01.2010, 11:27   #8  
kuvg is offline
kuvg
Участник
Аватар для kuvg
 
9 / 10 (1) +
Регистрация: 01.05.2009
Всем привет!
Сегодня вдруг стала появляться аналогичная ошибка
"Метод "execute" в COM-объекте класса "ADODB.Command" возвратил код ошибки 0x80040E37 (<неизвестно>), который означает: [Microsoft][Драйвер ODBC dBase] Объект 'fileName' не найден ядром базы данных Microsoft Jet. Проверьте существование объекта и правильность имени и пути."
X++:
CCADOCommand    command = new CCADOCommand();
CCADORecordset    rs = new CCADORecordset();
CCADOConnection    cn = new CCADOConnection();
;
cn.open("Driver={Microsoft dBASE Driver (*.dbf)}; DriverID=277; Dbq="+_filePath+";");

command.activeConnection(cn);
command.commandText("select  * from "+_fileName);

rs = command.execute(); //<-ошибка тут
Ничего не менялось. Файл dbf существует и все пути указаны как обычно. Чего вдруг сломалось? Ниччего не понимаю...
Старый 18.01.2010, 11:37   #9  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,651 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
kuvg

Вы не пробовали читать до конца данную тему?

Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Дык это.... не путайте мух с котлетами ... Строчка Driver={Microsoft dBASE Driver (*.dbf)}; от ODBC, и она ессно не соответствует строчке OLEDB, которую ожидает увидеть ADO.
Синтаксис строки подключения для ODBC и для ADO можно посмотреть здесь

Connection strings for DBF / FoxPro
За это сообщение автора поблагодарили: kuvg (1).
Старый 18.01.2010, 12:00   #10  
kuvg is offline
kuvg
Участник
Аватар для kuvg
 
9 / 10 (1) +
Регистрация: 01.05.2009
Ок. Делаю:
X++:
CCADOCommand    command = new CCADOCommand();
CCADORecordset    rs = new CCADORecordset();
CCADOConnection    cn = new CCADOConnection();
;
cn.open(strFmt("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%1;Extended Properties=dBASE IV;User ID=Admin;Password=;", _filePath));

command.activeConnection(cn);
command.commandText("select  * from "+_fileName);

rs = command.execute(); //<-ошибка тут
но ошибка никуда не девается
Говорю же до сих пор работало без проблем...
Старый 18.01.2010, 12:26   #11  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,651 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Работающий у меня пример.

X++:
static server void test_ADOConnection()
{
    CCADOConnection         adoConnection;
    CCADOCommand            adoCommand;
    str                     strCommand;
    FileFolder_RU       fileFolder_RU;

    CCADOFields             adoFields;
    CCADOField              adoField_0,
                            adoField_1,
                            adoField_2,
                            adoField_3,
                            adoField_4;
    ;

    // Путь доступа к директории, где находится DBF
    fileFolder_RU = "C:\\MyFolder";

    // Подключение к DBF
    adoConnection       = new CCADOConnection();
    adoConnection.connectionString(strFmt("Driver={Microsoft dBase Driver (*.dbf)};DriverID=277;Dbq=%1;",fileFolder_RU));
    adoConnection.open();
    adoCommand          = new CCADOCommand();
    adoCommand.activeConnection(adoConnection);

    adoCommand.commandType(1);    // Возможно, этой настройки не хватает?

    // Выполнение команды
    strCommand = "Select * from MyTable.dbf";

    adoCommand.commandText(strCommand);
    adoRecordSet     = adoCommand.execute();
    adoFields        = adoRecordSet.fields();
    adoField_0     = adoFields.itemIdx(0);
    adoField_1     = adoFields.itemIdx(1);
    adoField_2    = adoFields.itemIdx(2);
    adoField_3 = adoFields.itemIdx(3);
    adoField_4    = adoFields.itemIdx(4);

    // Просмотр результата
    while (! adoRecordSet.EOF())
    {
        print   " adoField_0=",adoField_0.value();
        print   " adoField_1=",adoField_1.value();
        print   " adoField_2=",adoField_2.value();
        print   " adoField_3=",adoField_3.value();
        print   " adoField_4=",adoField_4.value();

        adoRecordSet.moveNext();
    }

    pause;
    adoConnection.close();
    return;
}
Если код работал, а потом перестал. И при этом сам код не менялся, то, возможно, произошло внешнее (по отношению к Axapta) изменение. Либо был изменен (удален) драйвер ADO/ODBC, либо была изменена какая-либо политика безопасности
Старый 18.01.2010, 13:40   #12  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,490 / 1060 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Права на доступ к файлу не менялись?
Старый 20.07.2014, 03:55   #13  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Имя файла не должно быть слишком длинным (8 символов), иначе будет ошибка

Последний раз редактировалось Eldar9x; 20.07.2014 в 04:02.
Теги
ado, dbf, чтение данных

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вспомогательный класс для импорта из Excel через ADO gl00mie DAX: База знаний и проекты 80 10.04.2017 10:55
Поговорим об ADO Gustav DAX: База знаний и проекты 63 11.05.2016 14:25
C# and AX Development: Using ADO for interfacing AX with an external database Blog bot DAX Blogs 0 05.08.2008 05:18
casperkamal: Using ADO to read from Excel in Microsoft Dynamics Ax Blog bot DAX Blogs 2 14.05.2007 11:59
Проблема: русские шрифты в отчетах, формируемых на сервере. Anais DAX: Администрирование 3 17.11.2003 13:20
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:55.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.