如何让查询到的记录显示在第一行,而不是中间一行

caizicheng 2004-05-02 03:28:46
dbgrid1中的数据行很多
我使用下面语句查找
dbgrid1.datasoure.dataset.locate('A1',gss,[]);
查询到的记录总显示在dbgrid1的中间,
请问一下如何让让查询到的记录显示在第一行上?
...全文
66 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
caizicheng 2004-05-05
  • 打赏
  • 举报
回复
不是这样的,
我就是想把他定位在当前数据页的第一行(或而当前数据页的任意一行)
野草飞雪 2004-05-05
  • 打赏
  • 举报
回复
...
0600
0700
0800
0830/////查询到的记录显示在dbgrid1一页数据的最中间
0900
1000
1100
...

————————————————————————

0830以上的数据已经发车了,而后还没发车, 理解正确吗?
如果是这样的话,能否加标志。
caizicheng 2004-05-05
  • 打赏
  • 举报
回复
谢谢gechaosa
我的数据是按某一字段排序的
请问一下如和加上tqdoquery or tquery
能写点代码参考一下吗
野草飞雪 2004-05-05
  • 打赏
  • 举报
回复
to caizicheng (一见钟情) :
用我上面的方法应该没问题吧!
野草飞雪 2004-05-05
  • 打赏
  • 举报
回复
这只能从数据入手。下面仅供参考:

declare @var1 varchar(20) //根据你的字段类型定义
set @var1 = '生化分析仪' //把你具体定位的当前行A1的值传给它

select *,(case A1
when @var1 then 0
else 1
end) as Sort
from 表名 order by Sort

然后刷新DBGRID
紫色田园 2004-05-05
  • 打赏
  • 举报
回复
你的DBGRID组件的数据源控件是哪一个呢.
我建议你用 Query组件.
指定DBgrid1.datasource为Query1;
sg:
query1.active:=false;
query1.sql.text:='select * from table_name where 条件表达式';
query1.open;

DBgrid1里面显示的都是满足条件的记录.
gechaosa 2004-05-04
  • 打赏
  • 举报
回复
你的数据有序吗?
滑有按会么标准排序;
如果有,这样
准能实现
加上tqdoquery or tquery
caizicheng 2004-05-04
  • 打赏
  • 举报
回复
我试了一下
aa:=dbgrid1.datasoure.dataset.getbookMark;
dbgrid1.datasoure.dataset.close;
dbgrid1.datasoure.dataset.open;
dbgrid1.datasoure.dataset.gotobookMark;
这段代码的效果与
gss:=dbgrid1.datasoure.dataset.fieldbyname('A1').asstring;
dbgrid1.datasoure.dataset.close;
dbgrid1.datasoure.dataset.open;
dbgrid1.datasoure.dataset.locate('A1',gss,[]);
效果一样.还是不能解决滚动行时,数据更新 后指定的行乱跳的现象
Charriol 2004-05-04
  • 打赏
  • 举报
回复
ting
caizicheng 2004-05-03
  • 打赏
  • 举报
回复
我顶
ssoj 2004-05-03
  • 打赏
  • 举报
回复
用bookmark试一试可不可以
caizicheng 2004-05-02
  • 打赏
  • 举报
回复
如果能准确定位dbgrid1每个可视记录在dbgrid1一页数据中的位置
就可以解决dbgrid1数据刷新时记录乱跳的现象
caizicheng 2004-05-02
  • 打赏
  • 举报
回复
这样能更好的利用dbgrid1中的数据:
如客车发车时间有
...
0600
0700
0800
0830/////查询到的记录显示在dbgrid1一页数据的最中间
0900
1000
1100
...
我要查0830时间以后的数据
dbgrid1.datasoure.dataset.locate('A1','0830',[]);
后:查询到的记录总显示在dbgrid1的中间,而0830上面的数据我们并不关心,对我们来说是无用的
所以我需要把查询到的数据行显示在dbgrid1中一页数据中的第一行,这样更好的利用dbgrid1
显示我们需要的数据。
0830
0900
1000
1100
。。。

capoatguitar 2004-05-02
  • 打赏
  • 举报
回复
明白你的意思,但是为什么非要第一行呢??
caizicheng 2004-05-02
  • 打赏
  • 举报
回复
我顶
caizicheng 2004-05-02
  • 打赏
  • 举报
回复
首先谢谢你们!!!
你们可能误会我的意思了
我说的是定位的记录总是显示在dbgrid1中一页数据的最中间
我现在要得是该数据行显示在dbgrid1中一页数据中的第一行。
capoatguitar 2004-05-02
  • 打赏
  • 举报
回复
你是什么目的??为了看的清楚吗?
指向一行时,把那行底色变为醒目的颜色
ssoj 2004-05-02
  • 打赏
  • 举报
回复
简单一点用filter行不行?
执行的效果只是把A1字段符合gss的字段显示出来,
那肯定是第一行了.
gechaosa 2004-05-02
  • 打赏
  • 举报
回复
dbgrid1.datasoure.dataset.frist;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧