怎么用呢?因为根本没有什么其他附加的条件可使某一记录成为唯一的记录,只知道F1=‘ABCD’。难道TQuery中有其他特殊的方法吗?

解决方案 »

  1.   

    不如加索引吧,这样'abcd'的纪录就放在一起了
      

  2.   

    To:NightCloud() 因为某种需要不能在该字段上加索引,否则记录显示顺序不合要求。
      

  3.   

    query1.close;
    query1.sql.clear;
    query1.sql.add('select *');
    query1.sql.add('form T');
    query1.sql.add('where F1=:F');
    query1.Params[0].value:='ABCD';
    query1.open;
    query1.first;
    while not query1.eof do
      begin
          .
          .
          .
        query1.next; 
      end;
      

  4.   

    用TQUERY就可以把所有F1=‘ABCD’的记录找出来了,
    然后,QUERY.NEXT,就可以往下找了,直到你找到。
    OK?
      

  5.   

    其实DELPHI的LOCATE也不一定就不是内部循环!所以我们现在就用最笨的办法(往往最有效)
    while not T.eof do
    begin
      if t.fieldByname('f1').asstring='abcd' then
      begin
        if  messagebox(handle,'找到记录'+#13#10+'选“是”确定,选“否”继续查找下一个','abcd',mb_YesNo=idyes then break;
      end;
      T.next;
    end;
      

  6.   

    其实DELPHI的LOCATE也不一定就不是内部循环!所以我们现在就用最笨的办法(往往最有效)
    while not T.eof do
    begin
      if t.fieldByname('f1').asstring='abcd' then
      begin
        if  messagebox(handle,'找到记录'+#13#10+'选“是”确定,选“否”继续查找下一个','abcd',mb_YesNo)=idyes then break;
      end;
      T.next;
    end;  
    不好意思!
    前面一个回答少加了括号!
    往中间加入你的代码吧!
     
      

  7.   

    各位朋友:我这个问题出自我想“设计”的关于证券交易盈亏计算的小程序中。
    具体情况是某一股民在一年四季中可能有多次交易,例如分批买入同一种股票,但价格、日期
    不一定同,也有可能买入其他股票,所以现在就设这些记录非常多,表是按买入日期为索引,
    因为要想让记录按日期顺序显示,但同时也许某些股票(记录)已经卖出,就加了标记,有可能
    表中记录如下所示:代码  买入日期   价格   数量   金额 卖出日期    价格 数量 金额 ... 卖出标记
    0001 2000.01.01 20     500   ...                                 False
    0002 2000.02.01 15     1000                                      False
    0001 2000.02.01 15     1000                                      False
    0003 2000.03.01 15     1000                                      False
    0001 2000.03.04 10     1000                                      False
    0005 2000.04.01 10     1000       2000.05.09 12   1000           True
    .
    .
    .
    程序主窗口中默认显示的是股民持仓(未卖出)的股票,按买入日期索引.所以如果用QUERY的话,则SQL语句可能形如下面:
     select * from T where 卖出标记='FALSE'
    所以若想改变WHERE 从句的条件也不行.  而目前的意思就是如何找到代码='0001'的记录,
    难道真的要象dbpower(db)的做法吗? 当然我目前所用的方法就如dbpower(db)的方法,
    但我不甘心,谁能帮助我吗?
      

  8.   

    设置过滤条件,但不要把它设为真,然后用数据集的movenext()方法,试试!
      

  9.   

    在不改变当前数据集过滤条件的情况下,看来在Delphi中是做不到象FoxPro中Locate For ...,
    然后再来个Continue之类的操作了,除非象dbpower(db)朋友所说的用最笨的办法(往往最有效),
    真是可惜啊???
      

  10.   

    是我没看懂吗?
    query1:select * from T where 卖出标记='false'
    query2:select * from query1 where 代码='0001'
      

  11.   

    不然就先过滤,然后next,应该可以,事先最好切断数据浏览控件跟表的联系,表面上根本看不出来。
      

  12.   

    TO:strongzp(strongzp),基本情况如上所述,要达到的要求是:    1、在网格中<<<一定要动态>>>显示满足一定条件的记录集,此条件不允许被修改
           如条件 Table1.Filter:='卖出标记='+Quotedstr('false');    2、设这样的记录集中有许多记录,且 代码='0001' 的记录也有许多,
           但此数据集按‘日期’建立索引,假设也不能按‘代码’建立索引。    3、问题就是如何一条一条地找到 代码='0001' 的记录(要动态显示),
           当然每找到一条记录,让用户作出选择是否已经找到所需的记录。    一定要象dbpower(db)朋友所说的办法去做吗?
        这样是否太冤、太对不起功能强大的Delphi 5?
        当然如果实在没有办法,那也只有采取dbpower(db)的办法。