我想对DBGridEH已显示的数据进行重新排序,就是按下标题就以标题为顺序排列(注明:我的DBGridEH的DATASET是BDE的StoredProc),望大家帮我想出好的点子 谢谢了
解决方案 »
- 關於數據導入的問題!!!!各位大俠幫幫忙!!!
- 请问:怎么判断popupmenu控件右键点击时,点中的是哪一项?
- 单步执行?
- 关于一个功能实现的疑问
- ==大家元旦快乐==我也来散散分===
- 用过存储过程的帮忙看下啊,不知道哪儿的错误!先谢了
- 关于字符加密问题?
- 求教delphi中DLL 函数的声明问题
- Delphi,我就是找不到ADo中的Error的錯誤代號,VB中有Err.number來判斷記錄重複,Delphi+Ado,在哪里?
- 请大侠指教:如何实现象PHOTOSHOP的魔术棒的功能?(内空)
- dxdbtreelist的用法
- 在线等Indy Intercept系列阻断器的用法和区别?200分。
例如不能在SQL语句中增加Order by ...,因为SQL可能原来已经包含Order by ...,
而且点击另一个Title时又要另外排序,目的是想作到象资源管理器那样随心所欲。
procedure TFHkdata.SortQuery(Column:TColumn);
var
SqlStr,myFieldName,TempStr: string;
OrderPos: integer;
SavedParams: TParams;
begin
if not (Column.Field.FieldKind in [fkData,fkLookup]) then exit;
if Column.Field.FieldKind =fkData then
myFieldName := UpperCase(Column.Field.FieldName)
else
myFieldName := UpperCase(Column.Field.KeyFields);
while Pos(myFieldName,';')<>0 do
myFieldName := copy(myFieldName,1,Pos(myFieldName,';')-1)
+ ',' + copy(myFieldName,Pos(myFieldName,';')+1,100);
with TQuery(TDBGrid(Column.Grid).DataSource.DataSet) do
begin
SqlStr := UpperCase(Sql.Text);
// if pos(myFieldName,SqlStr)=0 then exit;
if ParamCount>0 then
begin
SavedParams := TParams.Create;
SavedParams.Assign(Params);
end;
OrderPos := pos('ORDER',SqlStr);
if (OrderPos=0) or
(pos(myFieldName,copy(SqlStr,OrderPos,100))=0) then
TempStr := ' Order By ' + myFieldName + ' Asc'
else if pos('ASC',SqlStr)=0 then
TempStr := ' Order By ' + myFieldName + ' Asc'
else
TempStr := ' Order By ' + myFieldName + ' Desc';
if OrderPos<>0 then SqlStr := Copy(SqlStr,1,OrderPos-1);
SqlStr := SqlStr + TempStr;
Active := False;
Sql.Clear;
Sql.Text := SqlStr;
if ParamCount>0 then
begin
Params.AssignValues(SavedParams);
SavedParams.Free;
end;
Prepare;
Open;
end;
end;怎么不行,上面的是对query进行排序的过程
dbgirdeh我自己也没做过,不过建议试试 aiirii的方法了
这句去掉,试试