数据库查询的一点问题(50分)

  • 主题发起人 主题发起人 longwx
  • 开始时间 开始时间
L

longwx

Unregistered / Unconfirmed
GUEST, unregistred user!
您好,我想在对话框中按‘查看下一个’,然后DBGrid将指针移到数据库中下一条匹配记录,以便进行修改,这该怎么实现?谢谢!
 
var
Cnt, RecPnt: Integer; {*全局变量*}
...
Procedure NextClick(Sender: TObject);
Begin
Cnt := RecPnt;
With Table1 Do
Try
Open;
While Cnt<=RecordCount Do
Begin
If FieldValues['检索字段']=检索条件 Then
Begin
RecPnt := RecNo; Cnt = RecordCount;
End;
Inc(Cnt);
Next;
End;
Finally
Close;
End;
End;
 
用一个TQuery将保存查询结果, 但是不显示他。在这里面移到下一条纪录并在相应的
DBGrid中定位这个对应的纪录。
 
很简单,把table1的filter设置为查询条件如ID>100,
然后,在Button Click event中table1.FindNext
 
hekai is right.
btw:filted设为真假都没有关系。
 
加入一个BUTTON后,在BUTTON的ONCLICK()的过程中写入:
WITH TABLE1 DO
begin
locate('检索字段',检索直,[]);
end;
即可;
 
DBGRID的datasource--datasource1的Dataset须为TABLE1,
然后在BUTTON的onclick事件中加上:
table1.locate('字段名',检索值,[]);
if table1.state<>dfedit then table1.edit;
locate可以确定的字段类型可以是浮点型,字符型,时间类型等等
 
我觉得何必那么麻烦?

查找匹配的记录用一条SQL语句完成,

每次查看下一个只要Next就可以了。

比如:
SQL语句
Select * from MyTable
where myCondition
order by SomeFiels

Opne它;

Button1.OnClick中写:

with Query1 do
if not eof then
Next
else
ShowMsg('已到达最后一条记录!');
 
ttable.findfirst,findnext
 
tabel1.findnearest
 
hekai说的方法妙极,不必将filtered设为true,
该方法对于onfilterrecord一样有效,此问题应该结束了
 
接受答案了.
 
后退
顶部