Как изменить книгу по умолчанию для Excel DSN?

Я пытаюсь изменить книгу по умолчанию, используемую моим DSN Excel, с помощью следующего кода:

    std::string DSNConfig;
DSNConfig = "DSN=Excel Files";
DSNConfig += '\0';
DSNConfig += "DBQ=";
DSNConfig += outputFile;
DSNConfig += '\0';
DSNConfig += '\0';

if (!::SQLConfigDataSource(NULL, ODBC_CONFIG_DSN, "Excel", DSNConfig.c_str())) {
WORD iError, cbErrorMsg;
DWORD fErrorCode;
char ErrorMsg[1000];
iError = 1;
SQLInstallerError(iError, &fErrorCode, ErrorMsg, sizeof(ErrorMsg), &cbErrorMsg);
throw WplException(Message(ErrorMsg));
}

Каждый раз, когда я получаю сообщение об ошибке «Компонент не найден в реестре», но пользовательский DSN существует, я вижу его в диспетчере DSN.

Я явно что-то упускаю, кто-нибудь может увидеть что?

0

Решение

DSNConfig + = «\ 0»;

Не делает то, что вы думаете, что делает.

Я полагаю, вы пытаетесь добавить '\0' персонаж к std::string, Однако это добавит пустую строку. std::string::operator +=(const char *) остановится на первый NUL персонаж, с которым он сталкивается.

Исправление:

DSNConfig += '\0';
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]