Ir al contenido


Foto

[RESUELTO] Propiedad Sort en DataSource?


  • Por favor identifícate para responder
4 respuestas en este tema

#1 Fleon

Fleon

    Advanced Member

  • Miembros
  • PipPipPip
  • 172 mensajes
  • LocationRepública Dominicana

Escrito 09 septiembre 2010 - 11:09

Hola amigos, es sabido que los ADO tienen una propiedad Sort que sirve para ordenar los datos ya sea ascendente o descendente, pero quisiera saber si hay alguna manera de implementar o si existe esa propiedad en el componente DataSource, ya que estoy tratando de mostrar datos dinámicamente.

Estoy trabajando con D7 + ADO + DBF

Fleon xD
  • 0

#2 Delphius

Delphius

    Advanced Member

  • Moderador
  • PipPipPip
  • 6.295 mensajes
  • LocationArgentina

Escrito 09 septiembre 2010 - 11:26

Hola Fleon,
Creo, en mi humilde opinión, que no tiene demasiado sentido que el DataSource tenga esa funcionalidad.
¿Porqué? Muy sencillo: el DataSource no contiene ningún dato, en realidad los datos están en los conjuntos de datos (dataset) como los *Query o *Table. El DataSource sólo es un componente que sirve de vínculo o puente entre los datasets y los componentes visuales (data-ware) como DBGrid, DBEdit, etc.

Para ordenar los datos, lo más eficiente es lanzar consultas con la cláusula ORDER BY. Y como vez, en esto no interviene el DataSource sino un TADOQuery.  ;)

Si nos explicas con más detalles lo que pretendes hacer quizá podríamos ver que alternativas y soluciones hay.
  • 0

#3 Fleon

Fleon

    Advanced Member

  • Miembros
  • PipPipPip
  • 172 mensajes
  • LocationRepública Dominicana

Escrito 09 septiembre 2010 - 11:40

Gracias por tu pronta respuesta Delphius, la situación es la siguiente, hay varias tablas (TADOTable) con diferente info pero con los mismo campos, y presentarlo usando con el mismo DBGrid (Donde lo muestro) y RadioGroup (Donde Filtro la info por orden alfabetico) y así evito de usar dos de éste último componente, en el OnClick tengo lo siguiente usando sólo una Tabla:



delphi
  1. procedure TForm1.rgFiltroClick(Sender: TObject);
  2. begin
  3.   case rgFiltro.ItemIndex of
  4.     0:  Tabla1.Sort := 'NAME ASC, LASTNAME ASC';
  5.     1:  Tabla1.Sort := 'LASTNAME ASC, NAME ASC';
  6.     2:  Tabla1.Sort := 'CODE ASC';
  7.   end;
  8. end;



Pero...y qué pasa si en el DataSource esté asignado la Tabla2, los registros no se mostrarán ordenados en el DBGrid, la idea era hacer lo siguiente:



delphi
  1. procedure TForm1.rgFiltroClick(Sender: TObject);
  2. begin
  3.   case rgFiltro.ItemIndex of
  4.     0:  DataSource.DataSet.Sort := 'NAME ASC, LASTNAME ASC';
  5.     1:  DataSource.DataSet.Sort := 'LASTNAME ASC, NAME ASC';
  6.     2:  DataSource.DataSet.Sort := 'CODE ASC';
  7.   end;
  8. end;



Espero con esto se entienda :)

Fleon xD
  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 09 septiembre 2010 - 11:48

Puedes hacer los siguiente:



delphi
  1. procedure TForm1.rgFiltroClick(Sender: TObject);
  2. begin
  3.   case rgFiltro.ItemIndex of
  4.     0:  TCustomADODataSet(DataSource1.DataSet).Sort := 'NAME ASC, LASTNAME ASC';
  5.     1:  TCustomADODataSet(DataSource1.DataSet).Sort := 'LASTNAME ASC, NAME ASC';
  6.     2:  TCustomADODataSet(DataSource1.DataSet).Sort := 'CODE ASC';
  7.   end;
  8. end;



;)
  • 0

#5 Fleon

Fleon

    Advanced Member

  • Miembros
  • PipPipPip
  • 172 mensajes
  • LocationRepública Dominicana

Escrito 09 septiembre 2010 - 11:57

Muchas gracias enecumene, me funciona de perlas !!! (y)

Fleon xD

  • 0