在数据库中插入一条记录之前,想先查询一下,是否已有包含相同索引的记录,如有则不插入,没有则插入。用下面的代码,但是运行出错,提示:参数不足,期待是1。贴上代码,大家帮忙看看。
         m_pSet2->m_strFilter = "证书编号 = m_certsn";
if(!m_pSet2->IsOpen())
m_pSet2->Open();//运行到这句出错
if(m_pSet2->GetRecordCount() > 0){//判断库中是否已有该证书编号的记录
AfxMessageBox("记录已存在");
return;
}
m_certsn是一个变量,存储证书编号。

解决方案 »

  1.   

    m_pSet2->m_strFilter = "证书编号 = m_certsn";
    这个肯定不对啊。很多人总犯这种错误。m_certsn是变量没错,可把它这么放到两个引号之间,编译器只认识"m_certsn"这个字符串,不会认识m_certsn这个变量的。
    修改:
    CString sFilter;
    sFilter.Format("证书编号=%d",m_certsn);//m_certsn是整型变量吧?
    m_pSet2->m_strFilter = sFilter;
      

  2.   

    多谢您的指点。我改过来了,但是运行到m_pSet2->Open();时又出现提示“标准表达式中数据类型不匹配”。请问这个问题该如何处理?
      

  3.   

    sFilter.Format("证书编号=%d",m_certsn);//m_certsn是整型变量吧?m_certsn 是什么类型???如果是字符串就用
    sFilter.Format("证书编号=%s",m_certsn);
      

  4.   

    数据库中证书编号是什么类型呢?你的是什么数据库呢?
    如果证书编号是字符串类型,用以下试试:
    sFilter.Format("证书编号='%d'",m_certsn);
      

  5.   

    证书编号是字符串类型。数据库用的是ACCESS,改过以后的代码如下:
    UpdateData(); CString sFilter;
    sFilter.Format("证书编号=%s",m_certsn);//
    m_pSet2->m_strFilter = sFilter;
    if(!m_pSet2->IsOpen())
        m_pSet2->Open();//
    但是运行到m_pSet2->Open()时又出现提示“标准表达式中数据类型不匹配”。请问这个问题该如何处理?