Задача: интерактивно построить строку соединения ODBC. Из-за крайне путаного стандартного диалога выбора драйвера я выбираю драйвер своими силами, а затем запускаю SQLDriverConnect с непустой строкой.
retcode = SQLDriverConnect( // SQL_NULL_HDBC
hdbc,
reinterpret_cast<HWND>(aWinId),
const_cast<wchar_t*>(drv.data()), // "DRIVER={Driver name}"
drv.length(),
OutConnStr,
4096,
&OutConnStrLen,
SQL_DRIVER_COMPLETE );
Как всегда, находятся драйверы, от которых хочется взять и удавиться. У меня пока две разглючки.
1. Если драйвер не вернул ничего и через PostMessage выяснилось, что до интерактивного диалога дело не дошло, выводить: «Драйвер не умеет интерактивно строить строку соединения».
2. Если мы сидим в SQLDriverConnect и одновременно делаем что-то в диалоге выбора драйвера — выводить «Драйвер „Driver name“ работает, переключитесь в него через Alt+Tab и закройте диалог».
Первое встречалось в MYOB и частично в MySQL 3.x — первый вообще не имеет интерактивного диалога, второй по Cancel возвращает ошибку. Второе — в MySQL 3.x.
Причём поддержка SQLDriverConnect относится к уровню Core, т.е. должна поддерживаться драйвером безусловно.
Что ещё делать с этими странными драйверами?