我在csdn论坛上找到这样一些讨论,不太明白,请大虾详细解释一下,我相信这个问题
在实际做数据库时是很有意义的!
主 题: 怎么在DBGRID来排序呀?
作 者: lwjhugo (Alvin)
所属论坛: C++ Builder DataBase
----------------------------------------------------------------------我用BDE的query来连接DBGRID,现想对数据进行排序.我的记录设有主键的,也用了sql语句(Orderby)来排序,但不论怎样都系按原来的主键按序的.怎么样解决????
-------------------------------------------------------------------
回复人: watercelery(空心菜) ( ) 信誉:100
在DBGrid的 DBGridTitleClick事件中写就可以了
TADOQuery* temp=(TADOQuery*)DBGrid1->DataSource->DataSet;
if(flag==1)//当前是升序
{
temp->Sort=Column->FieldName+" DESC";
flag=0;
}
else
if(flag==0)//当前是降序
{
temp->Sort=Column->FieldName+" ASC";
flag=1;
}
-----------------------------------------------------------------
回复人: yui() ( ) 信誉:100
你的办法不可实现的,column是什么?无论是tadotable还是tadoquery还是tdbgrid都没有这个属性
-----------------------------------------------------------------
回复人: huang_jihua(不懂...学习) ( ) 信誉:100
DBGrid的ONTitleClick里面就有Column
-----------------------------------------------------------------
回复人: yui() ( ) 信誉:100
试了一下,是我错了,问题解决
-----------------------------------------------------------------
-----------------------------------------------------------------
回复人: dacaifu(dacai) ( ) 信誉:100
DataGrid OnTitleClick
DataSet->IndexFieldNames = ...
-----------------------------------------------------------------
回复人: weixing979(*****闪电侠*****) ( ) 信誉:100
一个例子
用BCB自带的库
Query1的databasename 用的是BCDEMOS ,SQL是select * from parts.db
DBGrid的 DBGridTitleClick事件中
void __fastcall TForm1:
BGrid1TitleClick(TColumn *Column)
{ Edit1->Text=Column->FieldName;
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("Select * from parts.db order by ");
Query1->SQL->Add(Edit1->Text );
//改为Query1->SQL->Add(Column->FieldName);没好使
// Query1->SQL->Add("desc") 或 Query1->SQL->Add("asc");
Query1->Open();
}
可实现单击DBGrid的Title按钮,对该字段排序。