お世話になります。
SQLサーバーにODBCを使ってVC++から接続しようとしています。
パラメータを使っているんですが、FileNameに完全な名前(例えばTEST1)をいれると、正常にオープンできます。
頭がTESTのデータをすべて検索するには、どのようにすれば良いでしょうか?
試しにFileName="like " + FileName + "%"にしてみてもダメでした。
よろしく、お願い致します。
CDataBase m_Db;
BOOL dbRet;
BOOL Ret = TRUE;
m_Db.m_strCodeParam = FileName;
m_Db.m_strFilter = _T("NPDsheet_no = ?");
try
{
dbRet = m_Db.Open();
}
catch( CDBException* e)
{
e->Delete();
AfxMessageBox("データベース接続に失敗しました。", MB_OK);
return;
}
> m_Db.m_strCodeParam = FileName;
> m_Db.m_strFilter = _T("NPDsheet_no = ?");
これで、? のところに 'like ファイル名%' というのが
当てはめられても期待通りには動かないと思いますが。
dairygoodsさま
ありがとうございます。
パラメータを使わずに、open後に目的のSQL文を作って実行しないと
ダメでしょうか?
CRecordsetのメンバー関数あたりから調べ直して見ます。
> m_Db.m_strFilter = _T("NPDsheet_no = ?");
= で比較したいときは、こうするのだから、
like で比較したいなら、
m_Db.m_strFilter = _T("NPDsheet_no like ?");
では。
m_Db.m_strCodeParam = FileName;
m_Db.m_strFilter = _T("NPDsheet_no like ? + '%'");
SQLServer相手なら上記でいけると思う。
# CDataBaseの中で余計なことしてないって前提ね。
dairygoodsさま
=をlikeにして、%を付加して無事にできました。
いつも適切なご指導、有難うございます。
ツイート | ![]() |