はじめまして、よろしくご指導ご鞭撻ください。
Visual Stidio6.0のVC++を使用しデータを取得するプログラミングを作成しています。
DB(MSDEを使用)からあるカラムのデータを取得する時のみ
「メモリ不足が不足しています」
というポップが現れ、そこで終了してしまいます。
Accessを使用しMSDEを「.adp」形式でテーブルのデータ定義を参照したところ
「ntext型」となっておりました。(初めて聞きました・・・。)
問題点を切り分ける為、Access(モジュールを作成しただSQLを発行し該当データを取得する。)でVCで作成したSQLを発行したところ取得できました。OSQLでも取得は可能でした。
何か回避方法などお知りでしたら、ご教授ください。
下記がソースになります。
------------------------------------------------------------------
void CDBtestDlg::WUP_DB()
{
CString strCon;
CString strSql;
strCon = "DSN=whatsup;UID=administrator;PWD=";
//実行SQL生成
strSql = "select * from SystemActivityLog";
CDatabase db;
//接続
db.OpenEx( _T( strCon ), CDatabase::openReadOnly | CDatabase::noOdbcDialog );
//実行
CRecordset rs( &db );
rs.Open( CRecordset::forwardOnly, _T( strSql ) );
CString strResult;
CODBCFieldInfo fi;
short nFields = rs.GetODBCFieldCount();
short index;
if (!rs.IsEOF())
{
strResult = "";
for(index = 0; index < nFields; index++ )
{
rs.GetODBCFieldInfo(index, fi);
strResult = strResult + fi.m_strName + ",";
}
}
CString strValue;
int i = 0 ;
CDBVariant varValue;
while( !rs.IsEOF() )
{
strResult = "";
for(index = 0; index < nFields; index++ )
{
//////// ここでntext型のデータ取得時に落ちます ///////
//////// ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ //////
rs.GetFieldValue( index, _T( strValue ) );
//////// ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ //////
strResult = strResult + strValue + ",";
}
AfxMessageBox(strResult);
rs.MoveNext();
i++;
}
rs.Close();
db.Close();
}