Как работать с dbf [MSVC]?
От: unfer  
Дата: 07.10.08 06:17
Оценка:
Доброго времени суток всем!
Проблема в следующем: есть dbf-файл, есть MS Visual Studio v7.1, необходимо вытащить данные из dbf-файла, язык С++. Технология доступа к данным не принципиальна, главное чтоб работало.
Пробую следующий код:
#include <iostream>
#include <conio.h>

#import "C:\Program Files\Common Files\System\ADO\msado15.dll" \
    rename ("EOF", "ADOEOF")

using namespace std;
using namespace ADODB;

int main()
{
    ::CoInitialize(NULL);
    _ConnectionPtr CnnPtr(__uuidof(Connection));
    _bstr_t CnnStr = "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:\\SH30";
    CnnPtr->Open(CnnStr, (_bstr_t)"", (_bstr_t)"", adConnectUnspecified);
    cout << "Open is OK\n";
    CnnPtr->Close();
    cout << "Close is OK\n";
    ::CoUninitialize();
    getch();
    return 0;
}

Во время buil'а ошибок нет, после запуска вылетает ошибка: Unhandled exception at 0x7c812aeb in ADOTEST.exe: Microsoft C++ exception: _com_error @ 0x0012fc50 и курсор указывает на кусок кода
inline HRESULT Connection15::Open ( _bstr_t ConnectionString, _bstr_t UserID, _bstr_t Password, long Options ) {
    HRESULT _hr = raw_Open(ConnectionString, UserID, Password, Options);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _hr;
}

в файле msado15.tli, а именно на строчку return _hr;.
Подскажите, в чем проблема? Вроде все делаю как в примерах...



07.10.08 12:03: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
Re: Как работать с dbf [MSVC]?
От: bnk СССР http://unmanagedvisio.com/
Дата: 07.10.08 06:29
Оценка:
Здравствуйте, unfer, Вы писали:

U>Подскажите, в чем проблема? Вроде все делаю как в примерах...


Удочка:

int main()
{
  try {
   ....
  }
  catch (_com_error& e) {
    cout << e.Description();
  }
}
Re[2]: Как работать с dbf [MSVC]?
От: unfer  
Дата: 07.10.08 06:48
Оценка:
компилятор выдал следующее:
[Microsoft][Драйвер ODBC dBase] Строка '<нет данных>' задает ошибочный путь. Проверьте, что путь задан правильно и имеется подключение к серверу, на котором находятся файлы.
Получается, строка подключения неправильная? Попробую поковыряться, но я ее с сайта connectionstring.com взял...
Re[3]: Как работать с dbf [MSVC]?
От: Glоbus Украина  
Дата: 07.10.08 09:50
Оценка:
Здравствуйте, unfer, Вы писали:

U>компилятор выдал следующее:

U>[Microsoft][Драйвер ODBC dBase] Строка '<нет данных>' задает ошибочный путь. Проверьте, что путь задан правильно и имеется подключение к серверу, на котором находятся файлы.
U>Получается, строка подключения неправильная? Попробую поковыряться, но я ее с сайта connectionstring.com взял...

Могу конечно ошибаться, но кажется то, что у тебя написано Dbq=c:\\SH30 — невалидно. Файло твое там лежит?
Удачи тебе, браток!
Re[4]: Как работать с dbf [MSVC]?
От: unfer  
Дата: 07.10.08 10:27
Оценка:
Действительно, дело было в строке подключения. Вот с такой
"Provider=MSDASQL;Data Source=файлы dBASE;defaultdir=c:\\sh30\\";
строкой все заработало =)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.