我用SQL语句查询数据库中的某条记录的时候,
用Select * form 1.db where DEH = 'xxx'作的,DBGrid中只把该记录显示出来了。
我想要的结果是,只是把记录指针指向该条记录,而其他的记录都一样显示出来,该怎么作?急,,谢谢!

解决方案 »

  1.   

    那你就不能用where。我也是初学,具体怎么指向某条记录我也不知道。
      

  2.   

    先Select * form 1.db 再调用loacate 到那条记录
      

  3.   

    先Select * form 1.db用 ADOQuery1.RecNo:= I 定位
      

  4.   

    TQuery.SQL.ADD('Select * from 1.db  ');
    TQuery.first;
    while not TQuery.Eof do
    begin
      if TQuery.fieldByName('').asstring = 'xxx' then
      Break;
    end;
    TQuery.close;
    TQuery.open;
    OK了。
      

  5.   

    哦,在while循环中,
    while not TQuery.Eof do
    begin
    if TQuery.fieldByName('').asstring = 'xxx' then
    break;
    TQuery.next;
    end;
      

  6.   

    同意delphiseabird(沙鸥) 的意见。
      

  7.   

    我刚走一会儿,这里还真热闹啊, 
       pengqi19810627(心累了)的答案很不错啊,用动态查询更好,
      

  8.   

    好了。找到问题的所在了。这里上来说几句:
    pengqi19810627(心累了) 的方法,有个循环的过程,如果数据很多的话,效果就不好了。delphiseabird(沙鸥)的方法不错,很快就找到我想要的数据,我现在就采用这个。
    下面把完整的写出来,方便大家学习。  Query1.Close;
      Query1.Sql.Clear;
      Query1.Sql.Add('Select * From 1.DB');
      Query1.Open;  Query1.Locate(KeyFields, KeyValues, [loPartialKey]);
      我就采用这个。或者是:
      Query1.Close;
      Query1.Sql.Clear;
      Query1.Sql.Add('Select * From 1.DB');
      Query1.Open;  Query1.first;
      while not Query1.Eof do
        begin
        if Query1.fieldByName(KeyFields).asstring = ‘xxx’ then begin
          break;
        end;
        Query1.next;
        end;
    但是用这个的话,有个很明显的循环过程显现,如果数据很多的话,效果就非常不好了。