/*CZhzlSet   是个CRecordSet   
  我想使用   DISTINCT以便去掉zhbh重复的行,结果是编译通过,运行时总是抛出异常   
    
  CZhzlSet*   pSet=new   CZhzlSet(&pWnd->m_database);   
  pSet->Open(CRecordset::snapshot,_T("SELECT   DISTINCT   zhbh   FROM   zhzl"));   
    
  还有SELECT后好象只能用选择所有字段而不能选择某几个字段?是这样的吗?有什么办法只选取想要的几个字段呢?   不希望改动DoFieldExchange(CFieldExchange* pFX)谢谢

解决方案 »

  1.   

    vc的?
    strSQL.Format("SELECT  DISTINCT  zhbh  FROM  zhzl");//初始化学生类型组合框
    rs.Open(CRecordset::snapshot,strSQL);看看另外抛出什么异常?
      

  2.   

    报出"Incorrect syntax near the keyword 'SELECT'."CExchNum是CRecordSet类,据说它会根据DoFieldExchange里面的每个RFX_...来定义 select的返回值
    如果RFX_Long(pFX, _T("DISTINCT [ticket]"), m_ticket);   就会得到 SELECT DISTINCT ticket FROM TicketInfo... 的效果但是我有时候我又不能用DISTINCT 的方式来查询,所以不能写成RFX_Long(pFX, _T("DISTINCT [ticket]"), m_ticket);
    该怎么做才能实现SELECT DISTINCT ticket FROM TicketInfo... 的效果, 而不用改动DoFieldExchange ?
    万谢~!CString CExchNum::GetDefaultSQL()
    {
    return _T("[dbo].[TicketInfo]");
    }void CExchNum::DoFieldExchange(CFieldExchange* pFX)
    {
    //{{AFX_FIELD_MAP(CExchNum)
    pFX->SetFieldType(CFieldExchange::outputColumn);
    RFX_Long(pFX, _T("[ticket]"), m_ticket);
    RFX_Double(pFX, _T("[exchange]"), m_exchange);
    RFX_Date(pFX, _T("[date]"), m_date);
    RFX_Long(pFX, _T("[dateIndexSys]"), m_dateIndexSys);
    //}}AFX_FIELD_MAP
    }