我用带参数的查询操作,可总是有问题:运行这个程序的时候如果查询条件设置是“0”,查询到的就是整个表的所有记录;如果查询条件设置是其他的数(比如是“10”),就一条记录也没有!可实际的数据表里查询条件为0和为10的有各两条记录!
请高手指教!
程序如下:
void CtreetestView::OnTestquery()
{
UpdateData(1); //从编辑框获取查询条件,
//写入视类中的变量m_strParam
if(m_pSet->IsEOF())
{
m_pSet->MoveFirst();
}
m_pSet->MoveNext();
if(m_pSet->IsEOF())
return;
CString strNewFilter; //设置查询过滤器
if (m_strParam!=_T("")) //如果编辑框中已经设置了查询条件
{
m_pSet->m_nLevelParam=m_strParam;
//m_nLevelParam是记录集类的变量,CString类型
strNewFilter=_T("LEVEL=?");
}
m_pSet->Edit(); //更新记录集
m_pSet->Update();
m_pSet->m_strFilter=strNewFilter; //更新记录集的过滤器
if (!m_pSet->Requery()) //处理查询错误
{
MessageBox(_T("查询出错!"));
m_pSet->m_strFilter=_T(""); //查询失败,清空过滤器
m_pSet->Requery(); //返回全部记录
return;
}
try
{
m_pSet->MoveFirst(); //查询成功,将记录集指针移
//动到查询到的第一条记录
}
catch(CDBException *pExcep)
{
MessageBox(_T("没有记录!"));
pExcep->Delete(); //删除报错信息
return;
}
}