本帖最后由 chenwei234 于 2012-06-08 12:40:52 编辑

解决方案 »

  1.   

    CString strComBox;
    m_comb_year->GetWindowTextW(strComBox);
      

  2.   

    通过:
    Cstring m_strYY,m_strMM;
    int index = m_comb_year.GetCurSel();
    m_comb_year.GetLBText(index, m_strYY);index = m_comb_month.GetCurSel();
    m_comb_month.GetLBText(index, m_strMM); 已经能够获取到所选择的年,月字符串:m_strYY,m_strMM了。问题是怎么把字符串 写成  #1901-01-18# and #1901-01-23# " 这样的形似,并且代替到select语句当中不出错。
      

  3.   

    好像这是动态 sql 的问题。
    我做如下测试:
    CString  cDate="1900-01-18";
    //查询
    _RecordsetPtr m_pRecordset;
    m_pRecordset.CreateInstance("ADODB.Recordset");
    m_pRecordset->Open("SELECT * FROM t57972 where ID1 between  " + cDate + "    and #1900-1-23# ",_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
    出现如下错误:
    J:\CEop_tee0606\TeeTu.cpp(214) : error C2664: 'Open' : cannot convert parameter 1 from 'class CString' to 'const class _variant_t &'
    常量 写成#1900-1-23# 是正确的。
    字符串变量cDate 要如何写??
    我在网上看到有人这样写:
    CString sqlstr=_T("select [交易号] from [交易记录] where [日期] between #"+date1+"# and #"+date2+"#");    # " + cDate + " #  也出现同样的错误。
    是查询方式不对吗??我用的是ado 直接用Recordset对象进行查询取得记录集 方式。求教高手!!!!!