ADOQuery Sort

liang_z 2001-10-31 09:36:26
procedure TFSearch.myDBGridTitleClick(Column: TColumn);
var
SortStr : String;
begin
SortStr := Column.FieldName+' ABC';
if myQuery.Sort=SortStr then
SortStr := Column.FieldName+' DESC';
myQuery.Sort := SortStr;
end;

为什么这样不行?

...全文
196 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
CsdnKey 2001-10-31
  • 打赏
  • 举报
回复
因为fdData是实际存在的字段
而fkLookup也是有一个实际存在与别的表建立连接
就是得到实际存在与其它表连接的字段(上面说错了)看下面:
我写了一个通用过程:

Procedure OrderGrid(Column: TColumn);
Var
DataSet: TDataSet;
FieldNames:String;
Begin
if not Column.Field.DataSet.Active then abort;
if not (Column.Field.FieldKind in [fkData,fkLookup]) then exit;
DataSet := Column.Field.DataSet;
if Column.Field.Lookup then FieldNames:= Column.Field.KeyFields
else FieldNames:=Column.Field.FieldName;
if DataSet is TCustomADODataSet then
with TCustomADODataSet(DataSet) do
begin
if (Pos(FieldNames, Sort) = 1) and (Pos(' DESC', Sort) = 0) then
Sort := FieldNames + ' DESC' else
Sort := FieldNames + ' ASC';
end;
end;
liang_z 2001-10-31
  • 打赏
  • 举报
回复
我这个字段是fkData的!
但是为什么只有fkLookup才可以排序呢?
CsdnKey 2001-10-31
  • 打赏
  • 举报
回复
不好意思 这是我在实践得到的,不过没有完全证实,还得去慢慢研究
liang_z 2001-10-31
  • 打赏
  • 举报
回复
TO:函数
帮助文档上好象没有这什么说?
CsdnKey 2001-10-31
  • 打赏
  • 举报
回复
确认是否存在此字段
如果存在:
字段类型一定是fkData,或是 fkLookup 类型
//可以 用:Column.Field.FieldKind in [fkData,fkLookup] 判断
如果是fkLookup型 就用
SortStr := Column.Field.FieldName+' ASC';
如果是其他类型可能就不行了
liang_z 2001-10-31
  • 打赏
  • 举报
回复
问题在于给Sort赋值时就出错!
liang_z 2001-10-31
  • 打赏
  • 举报
回复
同志们:
没人用过排序?
CsdnKey 2001-10-31
  • 打赏
  • 举报
回复
SortStr := Column.FieldName+' ASC';
可以参考下面:
if (Pos(FieldNames, Sort) = 1) and (Pos(' DESC', Sort) = 0) then
Sort := FieldNames + ' DESC' else
Sort := FieldNames + ' ASC';

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧