totalsql.Format("SELECT * FROM V_sum_term_power WHERE 地区代码='%s' AND 日期 between '%s' and '%s'",citycode,datestart,dateend);
try
{
        m_pRecordsettotal->Open((_variant_t)totalsql, 
m_pConnectionsql.GetInterfacePtr(),  
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
m_Message_state.SetWindowText("请确认sql中的“V_term_sum_power”是否存在");
return;//单步调试直接运行到这里,越过了m_Message_state.SetWindowText。 }

解决方案 »

  1.   

    遇错误难道不输出afxMessageBox((LPCTSTR)e.Description());
    afxMessageBox((LPCTSTR)e.ErrorMessage());然后,你如果断点跳过语句的话最好clean一下然后Rebuild。应该是DBG文件和源文件不符。
      

  2.   

    对,进入catch后m_Message_state.SetWindowText("请确认sql中的“V_term_sum_power”是否存在");这句话是没有执行的我也重新生成过解决方案,可是还都是不行
      

  3.   

    totalsql.Format("SELECT * FROM V_sum_term_power WHERE 地区代码='%s' AND 日期 between '%s' and '%s'",citycode,datestart,dateend);
    为什么不执行可能把这句优化掉了,但这句好象不对,这么改试试:
    totalsql.Format("SELECT * FROM V_sum_term_power WHERE 地区代码='%s' AND 日期 between #%s# and #%s#",citycode,datestart,dateend);
    日期得加#号,不能象字符型加单引号
      

  4.   

    楼上说的有道理,但是我没试过。你可以把后面的where 条件先不要,看能不能执行成功。