我在ashx文件中的sql语句是这样写的.
String strDbConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Web.HttpContext.Current.Server.MapPath("data/data.mdb");
        OleDbConnection DbConn = new OleDbConnection(strDbConn);
        DbConn.Open();
        String strsql = "select top 7 id,s_id,when Len(topic)>15 then (substring(topic,0,15)+'...') else topic end as topic from article where (s_id=228 or s_id=253) order by id desc";
        OleDbCommand cmd = new OleDbCommand(strsql, DbConn);
        OleDbDataReader dr = cmd.ExecuteReader();
但页面报错
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败。源错误: 
行 18:         String strsql = "select top 7 id,s_id,when Len(topic)>15 then (substring(topic,0,15)+'...') else topic end as topic from article where (s_id=228 or s_id=253) order by id desc";
行 19:         OleDbCommand cmd = new OleDbCommand(strsql, DbConn);
行 20:         OleDbDataReader dr = cmd.ExecuteReader(); 
第20行错...请教各位大哥大姐,我应该怎么改啊?还有,substring是不是要加上下面这一段啊?
    public string substring(string strTemp, int intLen, int IntClen)
    {
        int intCLenCount = System.Text.Encoding.Default.GetBytes(strTemp).Length;        string strTempA = "";        if (intCLenCount > intLen)
        {
            strTempA = strTemp.Substring(0, IntClen) + "...";
        }
        else
        {
            strTempA = strTemp.ToString();
        }        return strTempA;
    }

解决方案 »

  1.   

    when Len(topic)>15 then (substring(topic,0,15)+'...') else topic end as sql语句中将这一句拿了就正常.应该怎么办呢?
      

  2.   

     case when len(meetingid)>15 then substring(meetingID,1,15)+'...' else meetingid end as meetingid大哥。语法错误啊。还没csae 就 when 啦
      

  3.   

    加了case也不行.也是报同样的错
      

  4.   

    case  哪个字段  when 值  then 显示  晕 你 懂不懂啊  ??
      

  5.   

    String strsql = "select top 7 id,s_id,case when Len(topic)>15 then (substring(topic,0,15)+'...') else topic end as topic from article where (s_id=228 or s_id=253) order by id desc"; 
      

  6.   

    select top 7 id,s_id,case when Len(topic)>15 then (substring(topic,0,15)+'...') else topic end as topic from article where (s_id=228 or s_id=253)