Открытие таблиц FoxPro
CString CODBCDriver::GetODBCDriver()
{
char szBuf[2001];
WORD cbBufMax = 2000;
WORD cbBufOut;
char *pszBuf = szBuf;
CString sDriver;
//получаем имена установленных драйверов
if(!SQLGetInstalledDrivers(szBuf,cbBufMax,& cbBufOut))
return "";
// Поиск нужного драйвера
do
{
if( strstr( pszBuf, "Excel" ) != 0 )
{
// Нашли...
sDriver = CString( pszBuf );
break;
}
pszBuf = strchr( pszBuf, '\0' ) + 1;
}
while( pszBuf[1] != '\0' );
return sDriver;
}
А в классе диалогового окна, которое будет работать с полученными данными, вызываю объект:
CODBCDriver readingDriver;
sDriver = readingDriver.GetODBCDriver();
sDsn.Format("ODBC;DRIVER={%s};DSN='';DBQ=%s",sDriver,"Данные\\calls.dbf");
TRY
{
base.Open(NULL,false,false,sDsn);
...
Такая конструкция была "обкатана" и на Access - проблем не возникало. А вот при попытке подставить вместо "Excel" "FoxPro" выскакивает окно "Configure connection", в котором требуется указать тип базы данных - *.dbc или Free Table Directory. Более того, окно "не понимает" путь к файлу. При указанном варианте ("Данные\calls.dbf") оно отображает только каталог "Данные". С Excel'ем сразу подхватывался весь корневой каталог, в котором лежал exe'шник и плюсовалась часть "Данные\1.xls". Что здесь не так?