DBGRID排序(100分)

  • 主题发起人 主题发起人 lilywin
  • 开始时间 开始时间
L

lilywin

Unregistered / Unconfirmed
GUEST, unregistred user!
1.如何在dbgrid中單擊任何一列,dbgrid中的數據將按將列進行升序排序,再次單擊該列則按
降序排序;
2.建立一個模糊查詢,聚焦框在任何一列中,則按該字段進行查詢
 
1、处理dbgrid的oncolumn事件,动态改变datset的排序,可以定义一个排序标志,如果
是true则用正序等
2、???,说明不明白!
 
第一个问题同上,SQL语句like模糊查询
 
用第三方控件
DevExpress ExpressQuantumGrid
 
2.建立一個模糊查詢,聚焦框在任何一列中,則按該字段進行查詢
---------------
假设你聚焦框中的文本为 s_condition;
则sql语句为:
Select * from table1 where s_Field like '''%'+ s_Condition +'%'''

 
处理dbgridtitleclick事件:
procedure Tf_cpjg.DBGrid1TitleClick(Column: TColumn);
begin
if pos('DESC',t1.Sort)=0 then
t1.sort:=Column.Field.FieldName+' DESC'
else
t1.Sort:=Column.Field.FieldName+' ASC'
end;
 
1.lmqlyn的方法最简单
2。首先得到该列的字段名field:=Column.Field.FieldName
然后得到具体值condition:=adodataset.fields[field].value;
查询'select * from table where '+ field+' like '''+condition+''%'';
 
哈哈,我刚解决这个问题,给全分啊:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var desf:String; i:integer;
begin
with ClientDataSet1.IndexDefs do
begin
i:=ClientDataSet1.IndexDefs.IndexOf('dataset_index');
if i>=0 then
if ClientDataSet1.IndexDefs.Items.Fields=Column.FieldName then
if ClientDataSet1.IndexDefs.Items.DescFields='' then
desf:=Column.FieldName;
Clear;
with AddIndexDef do
begin
Name:='dataset_index';
Fields:=Column.FieldName;
DescFields:=desf;
end;
end;

if ClientDataSet1.IndexName='dataset_index' then
ClientDataSet1.DeleteIndex('dataset_index');
ClientDataSet1.IndexName:='dataset_index';
end;
 
后退
顶部