用ADOQuery查出一堆数据放在DBGrid 中,我想点某几个标题进行排序,这是在
OnTitleClik 中的代码:
void __fastcall TFormQueryOpenDoor::DBGrid1TitleClick(TColumn *Column)
{
AnsiString IFieldName=Column->FieldName;
if ( (IFieldName=="DateTime") ||
(IFieldName=="EnterType") )
{
ADOQuerySearchAll->IndexName = Column->FieldName;
}
}
提示出错:"当前提供者不支持索引功能必需的界面"
请较各位有什么好的办法,总不可能让我再用SQL语句选一遍吧?
附加一个问题,有没有CSDN的贴子搜索软件,在CSDN上找太慢了。
没有,
可是可以这样写
try
{
Conmpintable->Close();
Conmpintable->IndexFieldNames=Column->FieldName;
Conmpintable->Open();
}
catch(...)
{
Conmpintable->IndexFieldNames="";
Conmpintable->Open();
MessageBox(Handle,"对不起﹐不能以此排序﹗","提示",MB_OK);
}
用第三方组件,如EHLIB_3.0。功能很强大
如果是ADO,可以利用ADODataSet的sort方法,很好用的。
void __fastcall TFormMain::DBGrid1TitleClick(TColumn *Column)
{
Query->Close();
Query->CachedUpdates = true; //缓存更新
Query->SQL->Clear();
if (Desc) {
Query->SQL->Add("select * from Table where 排序字段 = "+sType+" order by "+Column->FieldName+" desc");//sType 可以是你要排序的任何东西,不过要看你数据库表怎么来设计了。
Desc = false;
}
else {
Query->SQL->Add("select * from Table where 排序字段 = "+sType+" order by "+Column->FieldName);
Desc = true;
}
Query->Open();
}
DataModule2->ADOQuery1->Sort=Column->FieldName+" DESC";
这样就可以排了。