我正在尝试确定如何使用 .accdb ODBC 驱动程序压缩 Access 数据库。请注意,我知道如何使用旧的 .mdb 驱动程序来完成此操作,基本上是这样的:
const TCHAR *Driver = TEXT("Microsoft Access Driver (*.mdb)");
TCHAR *DatabasePath = GetRegDBPath() ;
_stprintf_s(Attr, sizeof(Attr)/sizeof(TCHAR), TEXT("COMPACT_DB=%s%s %s%s General"), DatabasePath,
DBName,
DatabasePath,
DBName ) ;
Ret = SQLConfigDataSource(hPar,
ODBC_ADD_DSN,
Driver,
Attr);
但是用 Microsoft Access Driver (.mdb, .accdb) 替换驱动程序字符串,调用失败并调用 *SQLInstallerError * 以获取错误信息返回(相当无用)消息:Driver's ConfigDSN, ConfigDriver,或者 ConfigTranslator 失败.
我尝试了上述语法的变体,使用不同的输出数据库路径,省略了 General 参数,所有结果都相同。
此链接表明它无法完成,但我持怀疑态度,因为可以从 ODBC 管理员面板执行此操作。此外,通过 ACEODBC.DLL 查找字符串内容显示了 COMPACT_DB 字符串的存在:
jon@monolith:~/temp$ strings -t x -e l ACEODBC.DLL | grep -i 紧凑型 395f0 COMPACT_DB 39978 COMPACT_DB=%s
所有建议如果我知道正确的语法是什么应该是可能的。