简单问题(排序)(60分)

  • 主题发起人 主题发起人 爱上猫的鱼
  • 开始时间 开始时间

爱上猫的鱼

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.DBGridEh1TitleClick(Column: TColumnEh);
begin
if Column.Field.FieldKind = fkLookup then
exit;
if Column.Field.FieldKind = fkCalculated then
exit;
if Column.Title.SortMarker=smDownEh then
begin
Column.Title.SortMarker:=smupEh;
ADOQuery1.Sort:=Column.FieldName +' DESC ';
end
else
begin
Column.Title.SortMarker:=smDownEh;
ADOQuery1.Sort:=Column.FieldName ;
end;
end;

各位大侠帮忙解释一下下面几句话的意思
Column.Field.FieldKind = fkLookup;
Column.Field.FieldKind = fkCalculated;
Column.Title.SortMarker=smDownEh;
Column.Title.SortMarker:=smupEh;
ADOQuery1.Sort:=Column.FieldName +' DESC ';
Column.Title.SortMarker:=smDownEh;
ADOQuery1.Sort:=Column.FieldName ;
请麻烦在具体解释一下,ADOQuery.Sort 和Column.Field.FieldKind的意思
 
大侠们帮帮忙啊
 
好久不来了,呵呵,你这段程序应该是实现点击标题进行排序的功能。
Column.Field.FieldKind = fkLookup;
//字段是不是查找字段类型,是有一个实际存在与别的表建立连接
Column.Field.FieldKind = fkCalculated;//字段是不是计算类型
Column.Title.SortMarker=smDownEh;//排序序方式:降,这可以点击标题排序
Column.Title.SortMarker:=smupEh;//排序方式:升
ADOQuery1.Sort:=Column.FieldName +' DESC ';
//sql中desc表示降序
Column.Title.SortMarker:=smDownEh;//上面解释了
ADOQuery1.Sort:=Column.FieldName ;//确定排序的字段
=========================
Column.Field.FieldKind中tfield详解
以下技术点采用的dataset以TADODataset为例,DBGrid采用ExpressQuantumGrid中的TCxGrid
一、增加计算字段
描述:表中的一个字段的值是从其他字段计算得来,而非表中实际存在
操作:
1.双击dataset;
2.右键,New Fields;
3.设置DisplayLabel,FieldKind:=fkCalculated,处理dataset的OnCalcFields事件,例:
procedure TFmSaleOrder.adSaleProductsCalcFields(DataSet: TDataSet);
begin
DataSet.FieldByName('金额').AsCurrency :=
DataSet.FieldByName('价格').AsCurrency * DataSet.FieldByName('数量').AsCurrency;

end;

二、增加LookUp字段
描述:字段的值根据另一字段的值从另一dataset中查询得出,并随之变化
操作:
1.双击dataset;
2.右键,New Fields;
3.设置DisplayLabel,FieldKind:=fkLookup,LoopupDataset:=查询基表,KeyField:=关联字段
三、为DBGrid增加统计脚注
描述:对表中所有行计算计数、总和、平均值等等;
操作:
1. 设置对应view的OptionsView.Footer为True;
2. 在对应View的DataController.Summary.FooterSummaryItems中加入需要进行统计的字段,并设置字段的Column、FieldName、Kind(求和为skSum)属性。
四、为字段控件关联下拉选择框
描述:字段的值可以或者只能通过从下拉框的dataset中选择一个字段得到
操作:
对单独的字段控件,利用TcxDBLookupComboBox;
1.设置TcxDBLookupComboBox的DataBinding;
2.设置TcxDBLookupComboBox的Properties,ListSource:=查询基表的Datasource,ListFieldNames:=下拉框中显示的字段(多个字段用;隔开),KeyFieldNames:=返回值的字段名;
对DBGrid中的字段,
1.设置对应View中TcxGridDBColumn对象的Properties为LoopupComboBox,其他设置同TcxDBLookupComboBox
==============================
ADOQuery.Sort 是来排序的。
例如用DBGrid 实现点标题排序.
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var
I: integer;
ADOQuery: TADOQuery;
begin
if not (Column.Grid.DataSource.DataSet is TADOQuery) then
Exit;
ADOQuery := Column.Grid.DataSource.DataSet as TADOQuery;
if (ADOQuery.Sort = '') or (ADOQuery.Sort = Column.FieldName + ' DESC') then
ADOQuery.Sort := Column.FieldName + ' ASC'
else
ADOQuery.Sort := Column.FieldName + ' DESC'
end;

==========================
我这里还收藏了一片大侠的笔记:
http://www.delphibbs.com/keylife/iblog_show.asp?xid=13930
 
谢谢你,这分全给你了
 
后退
顶部