PDA

Ver la Versión Completa : Índice de cliente


Luis
09-03-2005, 01:46:15
Hola foro, quiero ordenar (ascendente y descendiente) en un dbgrid en tiempo de ejecución (descendiente si vuelve a oprimir la misma columna) para ello utilizo el siguiente código:

procedure Tform1.gridTitleClick(Column: TColumn);
begin
with Column.Grid.DataSource.DataSet as TClientDataSet do
if IndexFieldNames = Column.Field.FieldName then
IndexFieldNames := Column.Field.FieldName + ' desc'
else
IndexFieldNames := Column.Field.FieldName;
end;

obviamente me envia un error de "campo no encontrado" al unir el nombre del campo con 'desc'. Alguien sabe como puedo lograrlo.

Nota:
Estoy trabajando con firebird 1.5 y delphi 7, utilizo dbExpress y ClientDataSet

:)

roman
09-03-2005, 02:12:22
Agrégale índices al ClientDataSet en su propiedad IndexDefs. Ahí te permite definir los índices con criterios descendentes o mixtos inclusive. Por ejemplo, si quieres ordenar descendentemente por un único campo agregas un índice en IndexDefs; en las propiedades Fields y DescFields del índice escribes el nombre del campo y le das un nombre al índice. Para seleccionar el índice usas la propiedad IndexName del ClientDataSet asignándole el nombre que le hayas puesto al índice.

// Saludos