Subject | Re: [IBO] Change ORDER changer to desc in OnPrepareSQL |
---|---|
Author | Helen Borrie |
Post date | 2005-02-10T01:01:13Z |
At 01:00 AM 10/02/2005 +0100, you wrote:
with MyDataset do
begin
SQLOrder.Clear;
SQLOrder.Add('name desc, ref');
SQLWhereItems...............
end;
Since OnPrepareSQL is the last place you can influence the query before it
is re-prepared, any SQLOrder entry will override the current OrderingItem
when preparing the dataset for re-opening. SQLOrder is useful if you want
to allow the user to define ad hoc orderings - which might perform badly if
set on unindexed or poorly indexed fields.
OrderingItems is really a more flexible way to condition the set ordering,
especially if you make the orderings available to the user for selection,
because it gives you the opportunity to pre-define orderings based on good
indexes.
Helen
>I use OnPrepareSQL to modify the sqlwhereitems as descibed in theThe SQLOrder property is available in OnPrepareSQL (and not anywhere else):
>Online help. That's working good.
>But how do I invert the given order on the defined oderitems, which
>contains concatenated fields (for example custumername+PK)?
>
>example:defined in OrderItems "customername=name,ref"
>normal ascending mode is resulting in : ... ORDER by name,ref
>wanted additional descending mode: ... ORDER by name desc, ref
>desc
>
>An idea is of course to add additional oderitems, but maybe there is
>another way to do so?
with MyDataset do
begin
SQLOrder.Clear;
SQLOrder.Add('name desc, ref');
SQLWhereItems...............
end;
Since OnPrepareSQL is the last place you can influence the query before it
is re-prepared, any SQLOrder entry will override the current OrderingItem
when preparing the dataset for re-opening. SQLOrder is useful if you want
to allow the user to define ad hoc orderings - which might perform badly if
set on unindexed or poorly indexed fields.
OrderingItems is really a more flexible way to condition the set ordering,
especially if you make the orderings available to the user for selection,
because it gives you the opportunity to pre-define orderings based on good
indexes.
Helen