CString strSQL;
strSQL="select  DISTINCT YEAR_MONTH from attendance_stat";//DISTINCT
if(!rs_kqtj.Open(CRecordset::forwardOnly,strSQL))//AFX_DB_USE_DEFAULT_TYPE    CRecordset::forwardOnly,strSQL   CRecordset::snapshot
{
MessageBox("打开数据库失败! "," 数据库错误",MB_OK);
return false;
}
   while(!rs_kqtj.IsEOF())
   {  
   m_ctrYM.AddString(rs_kqtj.m_YEAR_MONTH);
   rs_kqtj.MoveNext();
   }
   rs_kqtj.Close();
attendance_stat表:
ID  (自动编号也是主键) YEAR_MONTH  PERSON WORK_HOUR  OVER_HOUR
1                      2000-01         1              2
2                      2000-01         20             20
3                      2001-02           2            2
4                      2001-02         20              30
我想在组合框中加入年月,年月不许重复,但是我用上面的代码在BOOL CGzjiesuanDlg::OnInitDialog() 中初试时为什么不行,这是怎么回事?

解决方案 »

  1.   

    弹出的提示为"无效的字符值或规格 在列号1( YEAR_MONTH  )
      

  2.   

    m_ctrYM.AddString((LPCTSTR)(_bstr_t)rs_kqtj.m_YEAR_MONTH)
      

  3.   

    m_YEAR_MONTH是CString 的
    我该怎么写哦,我想查询出的YEAR_MONTH  的值不重复哦
    strSQL="select  DISTINCT YEAR_MONTH from attendance_stat";//DISTINCT
    这语句有什么问题吗?
      

  4.   

    SQL语句没什么问题,问题在于 rs_kqtj.m_YEAR_MONTH 这个类型, 应该是 VT_BSTR 吧。
    把它转成 CString型,才能 AddString();
      

  5.   

    CAttStatSet rs_kqtj;
    strSQL="select  DISTINCT YEAR_MONTH  from attendance_stat ";//DISTINCT
    if(!rs_kqtj.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))//AFX_DB_USE_DEFAULT_TYPE  {
    MessageBox("打开数据库失败! "," 数据库错误",MB_OK);
    return false;
    }
       while(!rs_kqtj.IsEOF())
       {  
       m_ctrYM.AddString(rs_kqtj.m_YEAR_MONTH);
       rs_kqtj.MoveNext();
       }
       rs_kqtj.Close();
    不对哦,YEAR_MONTH是文本的,按照上面的做法都不得,提示“无效的描述器”