有SQL表(M)如下
M_id M_name M_sex M_age M_tel
1 张三 男 20 123456已用adoconnection连接好数据库,用adoquery指定好adoconnection,dataSource指定好adoquery,dbgrideh指定好dataSource
并添加一button
要求按button时dbgrideh显示上面表格的内容我在button里面添加这个代码时不知道怎么排序(因为我的列不是固定的,我是按代码显示的)procedure TForm1.Button1Click(Sender: TObject);
beginwith ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select M_id,M_name,M_sex from 会员信息');
open;
end;end;我在网上找了一些排序的,感觉用不上,我不知道这种不固定列要怎样实现排序,望大家指点
最好能用较详细的dbgrideh相关设置或代码,本人对dbgrideh这个不是很了解,谢谢另外我还想了解如何设置dbgrideh列宽,我每次查询得到的结果列宽总是很大的,但数据又没有多少,很难看
M_id M_name M_sex M_age M_tel
1 张三 男 20 123456已用adoconnection连接好数据库,用adoquery指定好adoconnection,dataSource指定好adoquery,dbgrideh指定好dataSource
并添加一button
要求按button时dbgrideh显示上面表格的内容我在button里面添加这个代码时不知道怎么排序(因为我的列不是固定的,我是按代码显示的)procedure TForm1.Button1Click(Sender: TObject);
beginwith ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select M_id,M_name,M_sex from 会员信息');
open;
end;end;我在网上找了一些排序的,感觉用不上,我不知道这种不固定列要怎样实现排序,望大家指点
最好能用较详细的dbgrideh相关设置或代码,本人对dbgrideh这个不是很了解,谢谢另外我还想了解如何设置dbgrideh列宽,我每次查询得到的结果列宽总是很大的,但数据又没有多少,很难看
2:使用adoquery的sort属性来排序,delphi 7的帮助有例子,列宽的调整应该是要添加dbgrideh的columns之后再设置width吧
sql.Add('select M_id,M_name,M_sex from 会员信息 order by M_id');这个办法的缺点是重新排序需要重新查询,如果查询复杂,数据量大的时候比较耗时2:用使用adoquery的sort
比如按m_id排序,在执行完查询后,再加一句
adoquery1.sort:='m_id,desc';这个办法重新排序只要设置adoquery的sort,无需重新查询,速度快
var
i:Integer;
begin
DBGridEh1.SortLocal:=True;
DBGridEh1.OptionsEh:=DBGridEh1.OptionsEh+[dghAutoSortMarking];
for i:=0 to DBGridEh1.Columns.Count-1 do
DBGridEh1.Columns[i].Title.TitleButton:=True;
end;