如题
1:是在DBExpress中.
2:用Locate方法得到RecNo,不用SQL Server通信,所以不用Select...Where...
但是我每次返回都是False,不知道谁还遇过这样的问题,说说经验,谢谢啦如果行的话,最好附上关键代码

解决方案 »

  1.   

    SQLConnection1: TSQLConnection;
    SQLDataSet1: TSQLDataSet;是使用得这些组件吗?注意TDateTime在dataset里的数据格式,Locate的时候根据这个格式去查找,应该没有什么问题的
      

  2.   

    注意TDateTime在dataset里的数据格式, Locate的时候根据这个格式去查找???这是什么意思??能不能给段代码??
    用的是TClientDataset;
    ClientDataset1.Locate('ATime', Arrayof([DateTimeValue]), []);
      

  3.   

    你看看ClientDataSet的Filter看看可不可以过滤出来
      

  4.   

    在filter里使用like语句进行查找
      

  5.   

    DBExpress中,filter没有办法写TDateTime的条件表达式,
    不像是在ADO 中可以用字符串来表示日期,
    但是SetRange可以
      

  6.   

    我想得到RecNo,即使用Like可以,也得不到RecNo啊,而且,Filter中用Like我也写不出表达式
      

  7.   

     
    你不是使用的是clientdataset么,你这样看看
      with self.ClientDataSet1 do
      begin
        Filtered:=False;
        Filter:='ATime like '+QuotedStr(FormatdateTime('yyyy-mm-dd',Now));
        Filtered:=True;
      end;
      

  8.   

    你不是使用的是clientdataset么,你这样看看
      with self.ClientDataSet1 do
      begin
        Filtered:=False;
        Filter:='ATime like '+QuotedStr('%'+FormatdateTime('yyyy-mm-dd',Now)+'%');
        Filtered:=True;
      end;
      

  9.   

    这样应该是没有问题的,可是得不到我想要的那个RecNo了/:(
    只有Locate才能定位返回到那个符合条件的记录吧?我的程序中关心的不是记录中的内容,而是位置
    呜呜.....月亮有QQ吗?如果方便加入QQ聊吧?
      

  10.   

    我的QQ是41013529
    如果不方便,麻烦继续看下这个贴,
    我现在试试ADO的Locate ,可是我却发现
    ADODataSet.Locate('ATime', VarArrayOf([DateTimeValue]), [])却出错:
    Could not convert variant of type (Array Variant) into type (OleStr)
    麻烦月亮看一下ADO的又怎么写Locate呢?=
    极度郁闷中.....
      

  11.   

    估计你locate的时候还是值不匹配,建议你取时间的时候就先将日期格式化成固定的字符串再返回,然后再使用locate
      

  12.   

    ADODataSet.Locate( 'ATime', '2007-09-26', []) 这样就可以吧
      

  13.   

    datetime在数据里也是一个字符串
      

  14.   

    我要郁闷了......
    ====================不行
      if Not ADODataSet1.Locate('ActTime',
        VarArrayOf(['2007-9-25']), []) then
        Windows.Beep(1000,100);
    ===================================================不行
      if Not ADODataSet1.Locate('ActTime',
        '2007-9-25', []) then
        Windows.Beep(1000,100);
    ===============================
    苍天啊...
      

  15.   

    select covert(atime.......) as atime from table 这样的返回结果,然后再locate
      

  16.   

    用类似这样的sql获得结果集SELECT CONVERT(VARCHAR(10), atime, 111) AS atime from table1
    clientdataset.locate('atime','2007/09/29',[])
      

  17.   

    刚才试了
    转成字符串可以了,而且字符串表示日期,随系统环境的变化可能使程序容易出错可是,不能直接用TDateTime类型到底是怎么回事呢???心里真是很不舒服......
      

  18.   

    希望月亮关注.....
    直接用TDateTime,在ADO中用Locate 好像也不行,即使用了你的Locate语句,我的是Delphi2007
      

  19.   

    TDateTime = type Double;TDateTime是一个Double类型,而你的数据库里存放的是varchar类型的,所以你直接进行locate是查不到结果的
      

  20.   

    不是,数据库中也是浮点形的,倒是我跟进VCL的时候,发现把要搜索的表达式改成了字符串,再跟进,发现用一个接口完成查找,郁闷,线索就断掉了,我想Google为什么这样都不行是不是几乎没有几个人Locate日期类型的数据???感觉这个问题很郁闷啊,在网上找也找不到相关的东西.......
      

  21.   

    用filter不是可以吗?为什么要那么麻烦啊?