/// <summary>
        /// 获取省份
        /// </summary>
        /// <param name="strWhere"></param>
        /// <returns></returns>
        public DataSet GetWeiyiPid(string strWhere)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("select * from (select ProId,count(ProId) as x from Collaborate ");
            if (strWhere.Trim() != "")
            {
                strSql.Append(" where " + strWhere);
            }
            return DBHelper.Query(strSql.ToString());
        }        #endregion
        
        
            private void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DataBindProvince();
            if (Request.QueryString["ProId"] == null || Request.QueryString["ProId"] == "")
            {
                string strSql = " group by ProId having count(ProId)>=1) c order by x desc  ";
                BindFridensLink(strSql);            }
            else
            {
                string ProId = Request.QueryString["ProId"].ToString();
                string strSql = " 1 =1 and ProId ='" + ProId + "' group by ProId having count(ProId)>=1) c order by x desc  ";
                BindFridensLink(strSql);
            }
        }    }
    #endregion
    
   请注意红色部分!错误就在那里! 空格我空了  那语句我在SQl2005用是可以的 你们看看是不是拼接错误啊!
        'Collaborate' 附近有语法错误。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Exception: 'Collaborate' 附近有语法错误。源错误: 
行 586:                    catch (System.Data.SqlClient.SqlException ex)
行 587:                    {
行 588:                        throw new Exception(ex.Message);
行 589:                    }
行 590:                    finally
  

解决方案 »

  1.   

    这看的出来什么呢? 调试 把最后生成的sql语句贴出来一目了然哦!调试后!贴最后sql语句
      

  2.   


    你的Collaborate后面是不是少了个括号
      

  3.   

    等等,这个地方是不是有问题?if (Request.QueryString["ProId"] == null || Request.QueryString["ProId"] == "")应该是if (Request.QueryString["ProId"] == null && Request.QueryString["ProId"] == "")???
      

  4.   

    select * from (select ProId,count(ProId) as x from Collaborate 这个SQL不对啊这是什么意思?\
    改成这样:select * from (select ProId,count(ProId) as x from Collaborate )as a where +"where;
      

  5.   

    BindFridensLink()这个方法在哪里?
      

  6.   


    strSql.Append("select * from (select ProId,count(ProId) as x from Collaborate ");
     
    string strSql = " group by ProId having count(ProId)>=1) c order by x desc ";
    这两句连接起来就差个括号了
      

  7.   

    GetWeiyiPid() 和 DataBindProvince()有什么关系?这个错误一般是传条件时没判断好,多一个where或少一个)
      

  8.   

    strSql
    在最后一个strSql 这里打断点。取出sql语句到 数据库执行看看,是不是sql的问题。
      

  9.   

    调试,找到向sql调用的sql语句,再看就容易了。
      

  10.   

    我一般是打断点调试,然后把调试时的SQL字符串到数据库去执行,有错没错一下就知道了
      

  11.   

    断点调试到出错的地方,看strSql=??,sql语句肯定拼错了
      public DataSet GetWeiyiPid(string strWhere)
      {
      StringBuilder strSql = new StringBuilder();
      strSql.Append("select * from (select ProId,count(ProId) as x from Collaborate ");
      if (strWhere.Trim() != "")
      {
      strSql.Append(" where " + strWhere);
      }
      return DBHelper.Query(strSql.ToString());
      }
    单看这一个方法strSql为"select * from (select ProId,count(ProId) as x from Collaborate where 条件"就不对了
      

  12.   

    select * from (select ProId,count(ProId) as x from Collaborate where proid=1
    group by ProId 
    having count(ProId)>=1) c order by x desc 
     
    这是我的Sql查询语句 这样少个括号是可以的 一加上就错!
      

  13.   


    这个方法没有通过/// 获取省份
      /// </summary>
      /// <param name="strWhere"></param>
      /// <returns></returns>
      public DataSet GetWeiyiPid(string strWhere)
      {
      StringBuilder strSql = new StringBuilder();
      strSql.Append("select * from (select ProId,count(ProId) as x from Collaborate ");
      if (strWhere.Trim() != "")
      {
      strSql.Append(" where " + strWhere);
      }
      return DBHelper.Query(strSql.ToString());
      }  #endregion
    就报上面的那个错误了!加) 也错误!
      

  14.   

    select * from (select ProId,count(ProId)  from Collaborat)  as xe where proid=1
    group by ProId  
    having count(ProId)>=1  order by x desc   测试成功~~~~
      

  15.   

     public DataSet GetWeiyiPid(string strWhere)
      {
      StringBuilder strSql = new StringBuilder();
      strSql.Append("select * from (select ProId,count(ProId) as x from Collaborate ");
      if (strWhere.Trim() != "")
      {
      strSql.Append(" where " + strWhere);
      }
      return DBHelper.Query(strSql.ToString());
      }
    这个方法本身就很多毛病
    1)把strSql.Append(" where " + strWhere);改为
    strSql.Append(" where " + strWhere+" )as c");
    2)如果程序不走if (strWhere.Trim() != "")直接else掉,strsql则变为select * from (select ProId,count(ProId) as x from Collaborate 所以要加else{ strSql.Append(" )as c");}
    后面private void Page_Load(object sender, EventArgs e)
      {
      if (!IsPostBack)
      {
      DataBindProvince();
      if (Request.QueryString["ProId"] == null || Request.QueryString["ProId"] == "")
      {
      string strSql = " group by ProId having count(ProId)>=1) c order by x desc ";
      BindFridensLink(strSql);  }
      else
      {
      string ProId = Request.QueryString["ProId"].ToString();
      string strSql = " 1 =1 and ProId ='" + ProId + "' group by ProId having count(ProId)>=1) c order by x desc ";
      BindFridensLink(strSql);
      }
      }  }
    红色那个方法看里面的sql语句对不对
      

  16.   

    看明白了,你的Append("select * from (select ProId,count(ProId) as x from Collaborate ");
    select * from (select ProId,count(ProId) as x
    这里面的'(',和')'得转义,用\转义字符转义
      

  17.   

    单步调试看看吧 看看最终生成的sql语句
      

  18.   


    怎么转啊!Append("select * from (select ProId\count(ProId) as x from  这样写上 直接就错!
      

  19.   

    select * from (select ProId,count(ProId) as x from Collaborate 
    group by ProId 
    having count(ProId)>=1) c order by x desc
    你改一下你的Sql你看卡卡你行不!  加上) 不对了!
      

  20.   

    怀疑你的语句成了select * from where group by 这样了
    你换成这样看看 select * from  where 1=1 and 拼接的条件 group by   
      

  21.   

    把你的代码改成这样一切ok 好了记得给分  /// <summary>
      /// 获取省份
      /// </summary>
      /// <param name="strWhere"></param>
      /// <returns></returns>
      public DataSet GetWeiyiPid(string strWhere)
      {
      StringBuilder strSql = new StringBuilder();
      strSql.Append("select * from (select ProId,count(ProId) as x from Collaborate ");
      if (strWhere.Trim() != "")
      {
      strSql.Append(strWhere);
      }
      return DBHelper.Query(strSql.ToString());
      }  #endregion
        
        
      private void Page_Load(object sender, EventArgs e)
      {
      if (!IsPostBack)
      {
      DataBindProvince();
      if (Request.QueryString["ProId"] == null || Request.QueryString["ProId"] == "")
      {
      string strSql = " group by ProId having count(ProId)>=1) c order by x desc ";
      BindFridensLink(strSql);  }
      else
      {
      string ProId = Request.QueryString["ProId"].ToString();
      string strSql = " where 1 =1 and ProId ='" + ProId + "' group by ProId having count(ProId)>=1) c order by x desc ";
      BindFridensLink(strSql);
      }
      }  }
      #endregion
      

  22.   

    怀疑你的语句成了select * from where group by 这样了
    你换成这样看看 select * from where 1=1 and 拼接的条件 group by因为你的条件写的是 != ""   不是  !equals("")  ,为""的时候引用不一样也会拼接那个where
      

  23.   


    select * from (select ProId,count(ProId) as x from Collaborate 
    group by ProId 
    having count(ProId)>=1 )as c order by x desc
    这是拼接的()!
      

  24.   

    楼主,你看看我的建议啊,说不定解决了呢怀疑你的语句成了select * from where group by 这样了
    你换成这样看看 select * from where 1=1 and 拼接的条件 group by因为你的条件写的是 != "" 不是 !equals("") ,为""的时候引用不一样也会拼接那个where
      

  25.   

    弱弱的问一下,你strSql条件能传进去吗?BindFridensLink、GetWeiyiPid调用的方法都不一样
    ps:为什么用美女头像提问的回答的人这么多
      

  26.   


    那个方法没过去!就说Collaborate  附近有语法错误!
      

  27.   

    在 return DBHelper.Query(strSql.ToString()); 处设个断点看看sql语句是什么  贴出来
      

  28.   

    调试获得strsql的值,再在数据库中运行…………
      

  29.   


    呜呜呜!DBHeper没有过去啊!
      

  30.   

    不是吧,我把你的sql语句弄出来再我这调试可以啊,哦我明白你把 '" + ProId + "' 改成"+ProId +"在我给你的代码里改,如果不行加我QQ398943062,在线给你解决
      

  31.   

    在调试走到return DBHelper.Query(strSql.ToString());这一步之前
    strWhere的值,和strsql的值
    把这2个值贴出来
      

  32.   

    StringBuilder strSql = new StringBuilder();写到上面第二句   strSql.Append(" group by ProId having count(ProId)>=1) c order by x desc ");
      

  33.   

    单步调试,然后把生成的SQL文放在pl/SQL里面执行下看看对不
      

  34.   

    难道不能在BindFridensLink里面调用GetWeiyiPid???
      

  35.   

    其实我也怀疑他sql语句没有拼接上…………
      

  36.   


    select * from (select ProId,count(ProId) as x from Collaborate  
    group by ProId  
    having count(ProId)>=1 )as c order by x descsql语句没问题 测试通过!
    问题应该出在那个  strSql.Append(" where " + strWhere);
    里的“where”上,
    建议楼主单步跟踪 看下return DBHelper.Query(strSql.ToString()); 这里的strSql的值 放在数据库里执行一下。
      

  37.   

    先把你写错的那个sql语句改了
    然后再短点调试,问题不大,一打断点就可以出来了
      

  38.   

    哎~~~找到数据库执行的地方加断点。看看具体执行的SQL 很可能是
    if (Request.QueryString["ProId"] == null || Request.QueryString["ProId"] == "")
      {
      string strSql = " group by ProId having count(ProId)>=1) c order by x desc ";
    这句
    if (Request.QueryString["ProId"] == null || Request.QueryString["ProId"] == "")
    结果为false 结果不走里面的语句了。所以没有拼接上
    然后你的SQL就不对了
      

  39.   


    Sql语句是对的 现在就是程序问题!拼接问题!以前没有排序我是对的!现在加上排序就不行了!
      

  40.   


    strSql.Append("select * from (select ProId,count(ProId) as x from Collaborate ");
    string strSql = " group by ProId having count(ProId)>=1) c order by x desc ";
    这两句,改为
    strSql.Append("select ProId,count(ProId) as x from Collaborate ");
    string strSql = " group by ProId having count(ProId)>=1 order by x desc ";
    如果还不行,那你就中大奖了
      

  41.   


    换上你的!“/ArthomePro”应用程序中的服务器错误。
    --------------------------------------------------------------------------------选择列表中的列 'Collaborate.ProId' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Exception: 选择列表中的列 'Collaborate.ProId' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。源错误: 
    行 586:                    catch (System.Data.SqlClient.SqlException ex)
    行 587:                    {
    行 588:                        throw new Exception(ex.Message);
    行 589:                    }
    行 590:                    finally
     
      

  42.   

    我XX你  你看看那个发帖的 100分能在3个小时呢?达到一百的。  充分说明了IT男寂寞。强烈要求csdn多来点IT女。同意的狼友~~~~~~~~~~~继续鼓掌!!谢谢
      

  43.   

    LS己经给LZ解决完了,俺也就只好打打酱油了!
    提示一下LZ,在SQL语句时,一定要看清!
      

  44.   

    在程序中把你的sql语句完整的打印出来,然后放到查询分析器中执行,看看到底错在哪里?