dbgrid标题排序后,adoquery.NEXT预览时没有按排序后移动,请高手指点!

KnitsEDI 2015-07-30 02:54:24
dbgrid标题排序后,adoquery.NEXT预览时没有按排序后移动,好像还是按排序前的顺序进行移动,
有什么办法能按dbgrid中的顺序进行预览。
...全文
90 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yothan 2015-08-03
  • 打赏
  • 举报
回复
dbgrid本身没有按标题排序的功能吧,不知道你是如何实现的,可能跟你的实现方法有关。如果是直接写sql排序,Next应该是不受影响的
道玄希言 2015-08-03
  • 打赏
  • 举报
回复
取消它的自动排序, 在DBGrid1TitleClick中重写排序代码: procedure TForm1.DBGrid1TitleClick(Column: TColumn); var I,ii:Integer; cStr:string; c:TColumn; begin for ii:=0 to TDBGrid(Column.Grid).Columns.Count-1 do begin c:=TDBGrid(Column.Grid).Columns[ii]; cStr:=c.Title.Caption; if (pos('▲',cStr)=1) or (pos('▼',cStr)=1) then begin Delete(cStr,1,2); c.Title.Caption:=cStr; end; end; for i:= 1 to DBGrid1.Columns.Count do begin //恢复所有标题字体为默认 DBGrid1.Columns[i-1].Title.Font.Color := clWindowText; DBGrid1.Columns[i-1].Title.Font.Style := []; end; if ADOQuery1.Sort<>(Column.FieldName+' ASC') then //判断原排序方式 begin ADOQuery1.Sort := Column.FieldName+' ASC'; //Column.Title.Font.Color := clRed; //改变标题行字体为红色,表示当前的排序方式为升序 Column.Title.Font.Style := [fsBold]; Column.Title.Caption:='▲'+Column.Title.Caption; //标题加上三角形表示当前排序方式为升序; end else begin ADOQuery1.Sort := Column.FieldName+' DESC'; //Column.Title.Font.Color := clBlue; //改变标题行字体为蓝色,表示当前的排序方式为降序 Column.Title.Font.Style := [fsBold]; Column.Title.Caption:='▼'+Column.Title.Caption; //标题加上倒三角形表示当前排序方式为降序; end; end; 这样,排序通过 ADOQuery1.Sort 实现, 用ADOQuery1.next 实现移动,应该就不会出问题了。
lyhoo163 2015-08-03
  • 打赏
  • 举报
回复
不会吧,可能是DBGrid没有实施排序。如果排序完成后,Next肯定是按排序后的次序排列的。自己查一查吧。 或者把相关代码贴出来。
KnitsEDI 2015-07-30
  • 打赏
  • 举报
回复
recno表示数据集中某数据的记录行, 在排序后记录行顺序全部打乱,不能解决这个问题啊!
zlm18691859 2015-07-30
  • 打赏
  • 举报
回复
那你别用next ,用RecNo来指定即可

5,388

社区成员

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

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