J'ai un problème avec l'appel à SQLGetDiagRec. Il fonctionne bien en mode ascii, mais en mode unicode, il fait planter notre application, et je ne vois pas pourquoi. Toute la documentation que j'ai pu trouver semble indiquer que l'application devrait gérer le changement ascii/unicode en interne. Le code que j'utilise est le suivant :
void clImportODBCFileTask::get_sqlErrorInfo( const SQLSMALLINT _htype, const SQLHANDLE _hndle )
{
SQLTCHAR SqlState[6];
SQLTCHAR Msg[SQL_MAX_MESSAGE_LENGTH];
SQLINTEGER NativeError;
SQLSMALLINT i, MsgLen;
SQLRETURN nRet;
memset ( SqlState, 0, sizeof(SqlState) );
memset ( Msg, 0, sizeof(Msg) );
// Get the status records.
i = 1;
//JC - 2009/01/16 - Start fix for bug #26878
m_oszerrorInfo.Empty();
nRet = SQLGetDiagRec(_htype, _hndle, i, SqlState, &NativeError, Msg, sizeof(Msg), &MsgLen);
m_oszerrorInfo = Msg;
}
tout va bien jusqu'à ce que cette fonction essaie de revenir, puis l'application se plante. Elle ne revient jamais à la ligne de code qui suit l'appel à get_sqlErrorInfo.
Je sais que c'est là que se trouve le problème car j'ai mis du code de diagnostic et il passe le SQLGetDiagRec ok et il termine cette fonction.
Si je commente la ligne SQLGetDiagRec, cela fonctionne bien.
Il fonctionne toujours bien sur ma machine de développement, qu'elle soit en version ou en débogage.
Toute aide sur ce problème serait grandement appréciée. Merci