Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-05-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 26
BlueSteel Va por buen camino
Cool me da error

Bueno.,... segui con las pruebas....

lo que hice fue crear una unidad nueva, pero me da error....

con el código que puso Roman cree esta unidad

Código Delphi [-]
unit Unit17;

interface

uses
    TypInfo, DBClient, DB;

procedure SortCDS(DataSet: TClientDataSet; Column: TColumn);
 
implementation
procedure SortCDS(DataSet: TClientDataSet; Column: TColumn);
var
  IndexName: String;
  IndexOptions: TIndexOptions;
begin
  if DataSet.IndexName = Column.FieldName + '_IdxA' then
  begin
    IndexName := Column.FieldName + '_IdxD';
    IndexOptions := [ixDescending];
  end
  else
  begin
    IndexName := Column.FieldName + '_IdxA';
    IndexOptions := [];
  end;
  if DataSet.IndexDefs.IndexOf(IndexName) = -1 then
    DataSet.AddIndex(IndexName, Column.FieldName, IndexOptions);
  DataSet.IndexName := IndexName;
end;
end.

pero me da el error de compilación

Unit17.pas(8): Undeclared identifier: 'TColumn'
Unit17.pas(18): Then expected but identifier 'FieldName' found

bueno y da otros más... quizas puede ser por que faltan algunas uses....

Salu2
__________________
BlueSteel

Última edición por BlueSteel fecha: 06-05-2008 a las 01:26:58.
Responder Con Cita
  #2  
Antiguo 06-05-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 26
BlueSteel Va por buen camino
Cool

Tambien probe con el codigo que dejo Totote.... si bien la funcion no me da error, cuando quiero ejecutar el codigo si me da error, pero puede ser por algo que este realizando mal...

Código Delphi [-]
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
  inherited;
  SortCustomClientDataset(ClientDataSet1,Column.FieldName);
end;

bueno, del codigo anterior, no se muy bien que debe ir en ClientDataSet1, puesto que lo he cambiado por el DBGrid, DataSourse y ADOQuery sin tener resultados positivos...

Salu2
__________________
BlueSteel
Responder Con Cita
  #3  
Antiguo 06-05-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por BlueSteel Ver Mensaje
quizas puede ser por que faltan algunas uses....
¿Tú qué crees?

Supongo que te falta DBGrids y te sobra TypInfo.

// Saludos
Responder Con Cita
  #4  
Antiguo 06-05-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 26
BlueSteel Va por buen camino
Cool

Hola Roman

gracias... ya agrege/quite la unidad que me indicastes.... se compila, ya no da error...

estoy con el problema de poder utilizarla....

Segun como me indicastes, puse lo siguiente....
Código Delphi [-]
procedure TOCompra_Registro.DBGrid1TitleClick(Column: TColumn);
begin
     SortCDS(Datos.AQ_VOrden, Column);  // ADOQuery
    //Tambien probé con
    //SortCDS(Datos.DS_VOrden, Column);  // Datasourse
    //SortCDS(DBGrid1, Column);  // DBGrid
end;

pero me da error de incompatibilidad de tipos (TClientDataSet and TADOQuery / TClientDataSet and TDataSource / TClientDataSet and TDBGrid )

Bueno.. eso..

Salu2
__________________
BlueSteel

Última edición por BlueSteel fecha: 06-05-2008 a las 22:48:37.
Responder Con Cita
  #5  
Antiguo 07-05-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pero amigo Blue, estamos en distinto canal

Me cito a mi mismo

Cita:
Empezado por mimismo
Pero el código que pone totote está pensado específicamente para un ClientDataSet lo cual da la enorme ventaja de no tener que reconsultar a la base. El ordenamiento se hace en memoria, por lo cual es mucho más rápido. Además, el código es genérico; sirve para cualquier ClientDataSet sin importar el nombre de los campos ni la columna seleccionada.
Es decir, en todo momento asumí que este ordenamiento sólo serviría para un ClientDataSet

// Saludos
Responder Con Cita
  #6  
Antiguo 20-05-2008
Avatar de totote
totote totote is offline
Miembro
 
Registrado: oct 2006
Posts: 150
Poder: 20
totote Va por buen camino
Bueno con respecto al Código original cuando se quería abrir el TClientDataSet generaba un error que no reconocia la columna, para solucionar ese problema lo que hice fue que al salir del formulario antes de cerrar el TClientDataSet llamo al siguiente procedimiento:

Código Delphi [-]
CleanCustomClientDataset(ClientDataSet1);

que sería esto solamente:

Código Delphi [-]
procedure CleanCustomClientDataSet(DataSet: TClientDataSet);
begin
  SetStrProp(DataSet, 'IndexName', '');
end;

Saludos.
__________________
¡Oh nooo! no compartas, compartir es pirateria, compartir te llevara a la carcel - Revolution OS
Responder Con Cita
  #7  
Antiguo 04-03-2009
NeoNew NeoNew is offline
Miembro
 
Registrado: mar 2009
Ubicación: Bogotá
Posts: 49
Poder: 0
NeoNew Va por buen camino
El siguinte codigo ordena con click en cualquier columna, pero necesito saber como se que una columna esta ordenada ASC o DESC para luego reordenarla.

Código Delphi [-]
procedure TForm.DBGrid1TitleClick(Column: TColumn);
{$J+}
 const PreviousColumnIndex : integer = -1;
{$J-}
begin
  if PreviousColumnIndex > -1 then
    begin
      DBGrid1.Columns[PreviousColumnIndex].title.Font.Style :=
      DBGrid1.Columns[PreviousColumnIndex].title.Font.Style - [fsBold];
    end;
    Column.title.Font.Style := Column.title.Font.Style + [fsBold];
    PreviousColumnIndex := Column.Index;
    ABSQuery1.Close;
    ABSQuery1.SQL.Text := 'SELECT * FROM Tabla ORDER BY '+ AnsiString(column.FieldName);
    ABSQuery1.RequestLive := True;
    ABSQuery1.Open;
end;

PD: ABSQuery = Query
Responder Con Cita
  #8  
Antiguo 04-03-2009
jorge82 jorge82 is offline
Baneado
 
Registrado: jun 2005
Ubicación: Mérida, Yucatán, México
Posts: 75
Poder: 22
jorge82 Va por buen camino
Bueno esto es lo que yo uso para ordenar en un DBGrid utilizando ClientDataSets.

Código Delphi [-]
procedure TForm1.DBGridTitleClick(Column: TColumn);
var
  Campo: string;
begin
  try
    Campo := Column.FieldName;
    with Column.Grid.DataSource.DataSet as TClientDataSet do
      if IndexFieldNames <> Campo then
        IndexFieldNames := Campo // Ascendente
      else
      begin
        AddIndex(Campo, Campo, [], Campo); // Descendente
        IndexName := Campo;
      end;
  except // Para que no salte una excepción si la columna es un campo calculado.
  end;
end;

Esto es gracias a que el ClietDataSet permite crear índices en memoria en tiempo de ejecucíon (Sin crearlos en la base de datos, claro). Espero que a alguien le sirva.
__________________
Un saludito.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ordenar un DBGrid con click sobre un campo bustio OOP 3 27-11-2007 19:00:41
Ordenar Datos en DBGrid mediante un Click anghell77 Varios 2 20-05-2006 17:59:27
Stringgrid Ordenar datos con click en titulo de columna dmassive Varios 1 20-01-2006 04:09:12
Como ordenar un DBGrid haciendo click sobre cada campo judoboy OOP 5 02-08-2005 02:52:31
ordenar datos del DBGrid! kage_01 Tablas planas 1 02-07-2005 03:42:28


La franja horaria es GMT +2. Ahora son las 23:25:40.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi