加个别名试试
select a.*, case  when dateadd(dd,AddDay,CreateDays) > getdate() then 1 else 0 end as OnTime , 
(AddDay - datediff(dd,CreateDays,getdate())) as LeftDays 
from CardInfor a where CardID in (select CardID from OpenUser where HardCode='0000000000000000000000000') 

解决方案 »

  1.   

    可能是数据驱动程序的问题,换一种连接方式试试,别用OLE DB
      

  2.   

    执行10次大概有3次回报错!==> 是VC2005里執行10次錯3次,
    还是在sql查询分析器里??如果是前者,那么可能是sql连接方式问题,换一种试试
    如果是后者,就怀疑是数据问题
      

  3.   

    在vs2005里错的,查询分析器没问题
    换连接方式换什么呢?
    我现在用的是OLEDB ,推荐下换什么啊?
      

  4.   

    我平常連sql的話就用 SqlConnection
      

  5.   

    Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=proDB;Data Source=.
      

  6.   

    哦,我是VC8.0,没有SqlConnection 
    HRESULT hr;
    hr=m_pConnection.CreateInstance(__uuidof(Connection)); try{
    if (SUCCEEDED(hr)){
    hr=m_pConnection->Open(_bstr_t(DBString),   _bstr_t(L""),
      _bstr_t(L""),
      adModeUnknown);
    if SUCCEEDED(hr){
    TRACE("CDBAccess::ConnectDB() 连接成功!\n");
    m_bIsConnected=TRUE;
    return TRUE;
    }else{
    TRACE("CDBAccess::ConnectDB() 连接失败!\n");
    return FALSE;
    }
    }else{
    TRACE("CDBAccess::ConnectDB() 创建数据库对象失败! ErrorCode = %08X" , hr);
    return FALSE;
    }
    }
    catch(_com_error &e){
    _bstr_t bstrSource(e.Source());
    _bstr_t bstrDescription(e.Description());        CString strErrMess;
    strErrMess.Format(" CDBAccess::ConnectDB()  Error: %08lx  Msg: %s  Source: %s  Description: %s\n",
    e.Error(),
    e.ErrorMessage(),
    (LPCTSTR)bstrSource,
    (LPCTSTR)bstrDescription);
    TRACE("%s\n",strErrMess);
    return 0;
    }
    catch(...){
    TRACE("CDBAccess::ConnectDB()  exception \n");
    return 0;
    }
    连接数据库的代码!
    那个DBString ,就是我刚才发的那一串了
      

  7.   

    你試試
    using System.Data.SqlClient然後用SqlConnection來連接sql2005
      

  8.   

    估计是VC的问题,楼主可以到VC版问问。
      

  9.   

    2005好像有驱动 SQLNCLI ?VC的不懂了,,VC中 connection open了,用完不需要close嗎?
    去VC版問吧
      

  10.   

    不用close,下次还要用啊
      

  11.   

    你试试在程序中,每次用完就close看看,
    我觉得应该用完就应该close啊
    否则open太多,不就玩完了
      

  12.   

    多关是由类型或NULL引起的
    1、CreateDays 尽量用datatime,否则用isdate判断一下
    2、Provider=SQLOLEDB.1;----> Provider=MSDASQL.1;
    3、升级ado