m_Set.m_strFilter.Format("SELECT user,name,e_name,brand,model,serial,c_no,asset,location,date,due,cal_freq,c_id,status,type,re from caliyq where due between '7/7/1997' and '7/7/1998'"); 
这里提示SELECT有语法错误,没有对准,m_Set 是一个表的类定义,因为没有做过请会的人多多指教!谢谢!

解决方案 »

  1.   

    使用convert把due转换成一种比较标准的日期格式,最好是"yyyy-mm-dd"或"yyyymmdd"或"yyyy.mm.dd"或者"yyyy/mm/dd"之类的。
      

  2.   

    比如:
    m_Set.m_strFilter.Format("SELECT user,name,e_name,brand,model,serial,c_no,asset,location,date,due,cal_freq,c_id,status,type,re from caliyq where convert(varchar(10),due,120) between '1997-07-07' and '1998-07-07'"); 
      

  3.   

    还是不可以 是否我那语句有错误
    一样的提示SELECT 附近有语法 不能准备语句   大家能否帮我看看
      

  4.   

    是否不能用Format, 我看过别的例子, 不用Format,请各位帮我分析 
    if(set2.m_Getstring2 == "<=")
    m_Set.m_strFilter.Format("SELECT user,name,e_name,brand,model,serial,c_no,asset,location,date,due,cal_freq,c_id,status,type,re from caliyq where convert(varchar(10),due,120) between '1997-07-07' and '1998-07-07'");
               
    m_Set.Requery();这句是查询的作用 执行到这就提示了 SELECT 附近有语法 不能准备语句 
     
      

  5.   

    如果使用Format就需要考虑某些转义字符。
      

  6.   

    要转换成一种比较标准的日期格式。另外你是什么数据库?如果是ACCESS的话,好像日期类型应该把''换成##。
    也就是应该为m_Set.m_strFilter.Format("SELECT user,name,e_name,brand,model,serial,c_no,asset,location,date,due,cal_freq,c_id,status,type,re from caliyq where due between #1997-07-07# and #1998-07-07# "); 
      

  7.   

    m_Set.m_strFilter.Format("[%s]='%s'",set2.m_Getstring1, set2.m_Getstring0); 
    当set2.m_Getstring0="9/8/1999"
    就可以找到对应的
    set2.m_Getstring0="between 9/8/1999 and 12/12/1904" 
    这样就不可以啊  各位高人 能否帮我看看 怎么办比较好啊?
      

  8.   

    goodboyws、pomelowu   两位斑竹 能不能  帮我下 谢谢 
      

  9.   

    没看出来什么
    不过测试sql语句最好的办法
    就是丢到数据库里去
    可以一段一段的去掉做测试看看语法是否有问题
    比如select user,passwd,time from user_table where user = 'aaa' and passwd = '12345'
    去掉where语句或者是其他的条件,这样来鉴定语句是否通顺
      

  10.   

    lygfqy
     现在是没有找到东西 是空的
    应该是between 9/8/1999 and 12/12/1904 的范围不对吧
      

  11.   

    lygfqy
     现在是没有找到东西 是空的
    应该是between 9/8/1999 and 12/12/1904 的范围不对吧
      

  12.   

                if(m_Set.IsOpen())
        m_Set.Close();     m_Set.Open();
                
            if(set2.m_Getstring2 == "=")
    m_Set.m_strFilter.Format("[%s]>='%s'",set2.m_Getstring2, set2.m_Getstring0);这是查寻 m_Set.Requery(); if(m_Set.IsEOF())

    AfxMessageBox("没有符合编号的记录");
    m_Set.Close();
    return ;
    }
    else
    this->Show();
    }
    我要把 上面查询语句换为时间段 查询 你们有什么好的语句  谢谢