以前我也碰过这个问题,但使用Locate没有找到答案 后来找了一个变通的方法,稍微麻烦一些,但也能达到要求 先认识一下TDataset的RecNo属性 DataSet.RecNo RecNO其实就是行号,标识了某一行数据,如DataSet.RecNo := 1 这个操作可以使指针指向第一行,所以:如果你能将符合你要求的数据行号保存下来,意味着你能做到如你所想的一个个查询。 你所需要做的: 1.定义一个行号列表 RecNoList: TStringList; 2.对DataSet进行循环得到标识列表 RecNoList.Clear; DataSet.First; DataSet.DisableControls; //加这个语句可以明显提高循环效率,原因请自己查 While Not DataSet.Eof do begin if DataSet.FieldByName('tName').AsString = EdtName.Text then //我这里查的是同名的人,你可以根据自己的要求修改这里实现你需要的模糊查询 begin RecNoList.Add(IntToStr(DataSet.RecNo)); end; DataSet.Next; end; DataSet.EnableControls; 3.有了列表,就可以方便的指向你的查询结果。这里面的控制你就自己考虑下吧(需要一个标签保存你当前所指向的RecNoList.Index,以便再次点击按钮可以指向下一个)。 4.如果你有Locate的解决方法,请帖出来。 |
|
来自: 昵称13564719 > 《delphi locate用法》