VC++6.0でSQLServer7.0のnvarchar(255)のデータが取得できません。
ODBCドライバは3.XXです。
データはCRecordsetオブジェクトのDoFieldExchangeでマッピング
しており、色々試して見ましたがダメでした。
以下すべて264byteまでしか取得できません。
RFX_Text(pFX, _T([VALUE]), m_VALUE, 512, SQL_WVARCHAR)
RFX_Text(pFX, _T([VALUE]), m_VALUE, INT_MAX)
DAOで似たようなバグがあったので、ODBCも調べているのですが
それらしき対策をみつけることもできず。。。。困っています。
どんなことでも構いません。なにか知っていることがあったら教えて下さい。
お願いします。
はじめまして。Flyといいます。
少し気になったんですが、DB上の255Byte目は
MBCS(マルチバイトキャラセット)で入ってますか?
Flyさん、返事ありがとうございます。
DB上の255Byte目はおそらくMBCS(マルチバイトキャラセット)で入って
いると思います。
マイクロソフト サポート技術情報の英語版にODBCのバグとして発見しました。
http://support.microsoft.com/default.aspx?scid=kb;en-us;293659
VC++5.0の場合は↓も該当
http://support.microsoft.com/default.aspx?scid=kb;en-us;182386
また、RFX_Textの中をデバッグしていくと以下の記述のあたりは
SQL_WVARCHARに対応できていませんでした。。。。とほほ。
AFX_SQL_SYNC(::SQLBindCol(pFX->m_prs->m_hstmt, (UWORD)nField,
SQL_C_CHAR, pvData, cbColumn, plLength));
結局 RFX_Text をコピー/改造してnvarcharの部分だけ独自のものを
呼出すようにし、解決しました。
p.s. 英語版の文献にはバグがいっぱい!?