Я пытаюсь подключиться к базе данных доступа .accdb, используя 32 объекта activeX в CVI 9.0.1. Я могу нормально подключиться к файлу .mdb, но когда я пытаюсь .accdb, функция проходит через отлично, но connectFlag возвращает 0, указывающее, что ему не удалось подключиться к файлу. Я могу использовать тот же самый код в WindowsXP, и он отлично подходит для файлов .accdb и .mdb. Я проверил, что драйверы доступа существуют в C: \ Windows \ SysWOW64 \ odbcad32.exeподключиться к базе данных доступа .accdb с использованием объекта C# activeX в Windows 7 и CVI 9.0.1
Microsoft Accees Driver (* .mdb, * .accdb) версия 14.00.7010.1000
Я также в состоянии для подключения к той же базе данных на моем компьютере с Windows 7 с помощью Visual Studio 2010. Я также загрузил пробную версию CVI SqlTool Kit и смог подключиться к базе данных .accdb с помощью DSN. Я также загрузил копию CVI 2013, думая, что моя версия работает только в 32-битном режиме и не сможет увидеть папку SysWOW64, однако я получил те же результаты в CVI 2013.
Я включил код ниже .. ..
HRESULT result = 0;
ERRORINFO errorStruct;
char * dbPtr = NULL;
char * SQLptr = NULL;
char * record = NULL;
VBOOL connectFlag;
CAObjHandle databaseObj = 0;
// database connection strings
char dbLocation[] = "DSN=test" ;
char dbLocation[] = "c:\\obsoleteparts.mdb" ;
char dbLocation[] = "c:\\serialnumbers.accdb" ;
char sqlStr[]= "SELECT tblSerialNumbers.serialNumber FROM(tblSerialNumbers) WHERE tblSerialNumbers.prefix='05-' ORDER BY tblSerialNumbers.serialNumber DESC";
prjAxDatabaseObj__Recordset rsObj;
dbPtr = dbLocation;
SQLptr = sqlStr;
errorTxt[0] = 0;
result = prjAxDatabase_New_axDatabase (NULL, 1, LOCALE_NEUTRAL, 0,&databaseObj);
result = prjAxDatabase__axDatabaseConnect (databaseObj, &errorStruct, &dbPtr, &connectFlag);
CA_DisplayErrorInfo (databaseObj,"error",result,&errorStruct)
код работает нормально, не отображается сообщение об ошибке, результат показывает, что операция прошла успешно, однако connectFlag возвращает 0 означает, что он не подключен. Любые предложения были бы очень благодарны.
-Джастин
Я (и успешно на протяжении многих лет) использую CVI версии 8x, 9x, ... 12sp1 с cvidb32.dll с файлами .mdb и .accdb в Windows XP. В Windows 7 есть проблемы с UAC с MS Access. Я часто использовал _Access blogs_, чтобы знать, как с ними бороться. Это звучит из вашего описания проблемы, у вас могут быть похожие проблемы. – ryyker