社区
数据库及相关技术
帖子详情
怎么对adotable表进行排序?
ntcxh
2008-02-04 10:59:49
本人在C++BUILDER中,运用DBGRIEDEH与ADOTABLE相连,请问如何能够根据点击DBGRIEDEH的标题栏后进行相应的排序?多谢各位高手的指教。
...全文
101
4
打赏
收藏
怎么对adotable表进行排序?
本人在C++BUILDER中,运用DBGRIEDEH与ADOTABLE相连,请问如何能够根据点击DBGRIEDEH的标题栏后进行相应的排序?多谢各位高手的指教。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cygjhjc
2009-09-19
打赏
举报
回复
非常感谢ydlchina,第一种方法是完全可行的,在ADOTable中也不会出现任何错误!
ydlchina
2008-02-04
打赏
举报
回复
这有点资料你参考,原理是一样的(DBGrid)
方法1
自用极品代码:
添加定义:
C/C++ code
TField *FSortField;
void __fastcall SetSortField(TField *Value);
__property TField *SortField = {read=FSortField,write=SetSortField};
C/C++ code
void __fastcall TForm1::SetSortField(TField *Value)
{
static bool DescSort = false;
try {
Screen->Cursor = crHourGlass;
if (FSortField != NULL) {
AnsiString label = FSortField->DisplayLabel;
FSortField->DisplayLabel = label.SubString(1,label.Length()-3); //删除尾部排序字符
}
if (FSortField == Value)
DescSort = !DescSort;
ADOTable1->Sort = Value->FieldName + " " + (DescSort?"DESC":"ASC");
Value->DisplayLabel = Value->DisplayLabel + (DescSort?" -":" +");
FSortField = Value;
}
__finally {
Screen->Cursor = crDefault;
}
}
//排序操作
void __fastcall TForm1::DBGrid1TitleClick(TColumn *Column)
{
SortField = Column->Field;
}
以上代码操作简单,不过只是用+和-表示了正向和逆向,自己可以用画图的方法做漂亮点
方法2
DBGrid1TitleClick事件中写
TADOQuery* temp=(TADOQuery*)DBGrid2- >DataSource- >DataSet;
//temp=NULL;
if(flag==1)//当前是升序
{
temp- >Sort=Column- >FieldName+" DESC";
flag=0;
}
else if(flag==0)//当前是降序
{
temp- >Sort=Column- >FieldName+" ASC";
flag=1;
}
这样就可以了。
DBgridEh- >字段的TitleButton为true并且DBgridEh- >optionEh的dghAutoSortMarking为true时,在title上会出现排序三角形。
void __fastcall TForm1::DBGridEh1TitleClick(TColumnEh *Column)
{
这里写排序代码;
}
ntcxh
2008-02-04
打赏
举报
回复
首先谢谢余粮的帮助,我采用的是第二种方法,可以如果运用的是ADOQUERY是可以的,如果改为用ADOTABLE则提示出错。不过,三角形的标记会出现,出错信息为:在对应所需名称或序数的集合中,未找到项目;
delphi 如何排序过滤数据库记录.
delphi 如何排序过滤数据库记录.对初学者帮助很大的
ADO
Table
数据的排序
ADO
Table
数据的排序 大家在使用Delphi进行开发的时候,经常会使用到
ADO
Table
和
Ado
Query控件进行数据操作,后者比较灵活,可以利用SQL语句来控制,而前者功能相对单一,使用
ADO
Table
进行数据排序就是没有Query控件那样使用order by 来的方便,不过这里还是有两种方法的,也很简单。 方法一:使用sort,方法如下
ADO
Tabl...
ADO
组件可以用SORT
进行排序
今天在CSDN里逛,偶然看到一篇文章,《一个很实用的Ehlib排序函数,适合
ADO
》出自http://blog.csdn.net/hz_zmd/archive/2005/02/17/290907.aspx,发现了
ADO
的SORT可以
进行排序
,(呵呵,如获至宝!这东西应该老早就有了啊,原来怎么不知道呢?……%¥%#)。于是我想,即然是
ADO
的东西,那就不只是能用在EHLIB里了,于是自己测试了一下
delphi StringGrid单击
表
头进行高速排序
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DB,
ADO
DB, DBGrids, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
StringGrid1: TString
一、
ADO
DataSet、
ADO
Table
、
ADO
Query的属性
一、
ADO
DataSet、
ADO
Table
、
ADO
Query的属性 属 性 说 明
数据库及相关技术
1,178
社区成员
18,939
社区内容
发帖
与我相关
我的任务
数据库及相关技术
C++ Builder 数据库及相关技术
复制链接
扫一扫
分享
社区描述
C++ Builder 数据库及相关技术
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章