SELECT TOP 25 * FROM C_Work_Object WHERE (obj_id NOT IN (SELECT TOP 0 obj_id FROM C_Work_Object Obj_dotime between '2005-10-1 0:00:00' and '2006-10-1 0:00:00' ORDER BY obj_id DESC) Obj_dotime between '2005-10-1 0:00:00' and '2006-10-1 0:00:00' ORDER BY obj_id DESC) 跟踪时提示Obj_dotime 附近有语法错误,大狭们指点一下啊??

解决方案 »

  1.   

     (obj_id NOT IN (SELECT TOP 0 obj_id FROM C_Work_Object Obj_dotime between '2005-10-1 0:00:00' and '2006-10-1 0:00:00' ORDER BY obj_id DESC) 
    TOP 0 这样会有记录吗,如果有按下面写试试
    TOP 0 obj_id FROM C_Work_Object  where Obj_dotime 
      

  2.   

    SELECT distinct TOP 25 * FROM C_Work_Object WHERE ( Obj_id NOT IN (SELECT TOP 0 Obj_id FROM C_Work_Object where Obj_dotime between '2005-2-1 0:00:00' and '2008-12-30 0:00:00' ORDER BY Obj_id DESC ))ORDER BY Obj_id DESC 这样可以的,但子查询外还要加入从外面传来的时间参数Obj_dotime between '2005-2-1 0:00:00' and '2008-12-30 0:00:00'怎么加啊??
      

  3.   

    应改为:
    SELECT TOP 25 * FROM C_Work_Object WHERE (obj_id NOT IN 
    (SELECT TOP 0 obj_id FROM C_Work_Object where Obj_dotime between '2005-10-1 0:00:00' and '2006-10-1 0:00:00' ORDER BY obj_id DESC) and Obj_dotime between '2005-10-1 0:00:00' and '2006-10-1 0:00:00' ORDER BY obj_id DESC)
      

  4.   

    SELECT distinct TOP 25 * FROM C_Work_Object WHERE ( Obj_id NOT IN (SELECT TOP 0 Obj_id FROM C_Work_Object where Obj_dotime between '2005-2-1 0:00:00' and '2008-12-30 0:00:00' ORDER BY Obj_id DESC )) and Obj_dotime between '2005-2-1 0:00:00' and '2008-12-30 0:00:00' ORDER BY Obj_id DESC 
    跟踪时育出现对象名 'C_Work_Object' 无效,小弟对子查询不是很熟悉,怎么修改啊?
      

  5.   

    SELECT TOP 25 * FROM C_Work_Object WHERE (obj_id NOT IN (SELECT TOP 0 obj_id FROM C_Work_Object where Obj_dotime between '2005-10-1 0:00:00' and '2006-10-1 0:00:00' ORDER BY obj_id DESC) 
    and Obj_dotime between '2005-10-1 0:00:00' and '2006-10-1 0:00:00' ORDER BY obj_id DESC
      

  6.   

    现在关键不是top 0的问题啊,就算改成top 1 也还是出现对象名 'C_Work_Object' 无效,什么原因啊??
      

  7.   

    SELECT TOP 25 * 
    FROM C_Work_Object 
    WHERE (
    obj_id NOT IN (
    SELECT TOP 0 obj_id 
    FROM C_Work_Object 
    where Obj_dotime between '2005-10-1 0:00:00' and '2006-10-1 0:00:00' 
    ORDER BY obj_id DESC
           ) 
    Obj_dotime between '2005-10-1 0:00:00' and '2006-10-1 0:00:00'
           ) 
    ORDER BY obj_id DESC
      

  8.   

    SELECT TOP 25 * FROM C_Work_Object WHERE (obj_id NOT IN (SELECT TOP 0 obj_id FROM C_Work_Object where Obj_dotime between '2005-10-1 0:00:00' and '2006-10-1 0:00:00' ORDER BY obj_id DESC) and Obj_dotime between '2005-10-1 0:00:00' and '2006-10-1 0:00:00') ORDER BY obj_id DESC
    大狭们能不能认真的看一下啊,还是同样的错误啊,对象名 'C_Work_Object' 无效????
      

  9.   

    SELECT TOP 25 *
    FROM C_Work_Object
    WHERE (
           obj_id NOT IN (
                         SELECT TOP 0 obj_id
                         FROM C_Work_Object
                         where Obj_dotime between '2005-10-1 0:00:00' and '2006-10-1 0:00:00'
                         )
          Obj_dotime between '2005-10-1 0:00:00' and '2006-10-1 0:00:00'
          )
    ORDER BY obj_id DESC子查询不需要order by 呵呵
      

  10.   

    晕,当然是C_Work_Object表了,还是同样的错误~~
      

  11.   

    obj_name前是否差一個and 或or
      

  12.   

    ----------------------------
    你就先单独执行下面这两句SELECT distinct TOP 25 * FROM C_Work_Object SELECT TOP 0 Obj_id FROM C_Work_Object where Obj_dotime between '2005-2-1 0:00:00' and '2008-12-30 0:00:00' ORDER BY Obj_id DESC 看是不是会报错
      

  13.   

    SELECT distinct TOP 25 * FROM C_Work_Object SELECT TOP 0 Obj_id FROM C_Work_Object where Obj_dotime between '2005-2-1 0:00:00' and '2008-12-30 0:00:00' ORDER BY Obj_id DESC 
    跟踪时出现对象名 'C_Work_Object' 无效
      

  14.   

    楼上的,这两句运行时都出现同样的错误,对象名 'C_Work_Object' 无效,数据源没有什么问题啊>???
      

  15.   

    SELECT TOP 25 * FROM C_Work_Object WHERE (obj_id NOT IN (SELECT TOP 0 obj_id FROM C_Work_Object where Obj_dotime between '2005-10-1 0:00:00' and '2006-10-1 0:00:00' ORDER BY obj_id DESC) and Obj_dotime between '2005-10-1 0:00:00' and '2006-10-1 0:00:00') ORDER BY obj_id DESC 
    为了实现上面的功能,C#代码如下:
            StringBuilder StrSql = new StringBuilder();
            StringBuilder strSql = new StringBuilder();
            StrSql.AppendFormat("SELECT distinct TOP {0}  * FROM C_Work_Object WHERE  ", Record_Per_Page.ToString());
            StrSql.AppendFormat("( Obj_id NOT IN (SELECT TOP {0} Obj_id  FROM C_Work_Object", (Record_Per_Page * (nPage - 1)).ToString());
            if (timeStart != DateTime.MinValue || timeEnd != DateTime.MinValue)
            {
                StrSql.Append(" where ");
                if (timeStart == DateTime.MinValue)
                {
                    StrSql.AppendFormat(" Obj_dotime < '{0}'", timeEnd.ToString());
                    strSql.AppendFormat(" Obj_dotime < '{0}'", timeEnd.ToString());
                }
                else if (timeEnd == DateTime.MinValue)  
                {
                    StrSql.AppendFormat(" Obj_dotime > '{0}'", timeStart.ToString());
                    strSql.AppendFormat(" Obj_dotime > '{0}'", timeStart.ToString());
                }
                else
                {
                    StrSql.AppendFormat(" Obj_dotime between '{0}'  and '{1}'", timeStart.ToString(), timeEnd.ToString());
                    strSql.AppendFormat(" Obj_dotime between '{0}'  and '{1}'", timeStart.ToString(), timeEnd.ToString());
                }
               
            }
            StrSql.Append(" ORDER BY Obj_id DESC ))");
            strSql.Append(" ORDER BY Obj_id DESC ");
            pdperson = pd.GetObjectBySql(StrSql.ToString()+ strSql.ToString());
    运行时出现了'Obj_dotime' 附近有语法错误,还望大狭慢帮改正一下啊???