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
[RESUELTO] Propiedad Sort en DataSource?
Comenzado por
Fleon
, sep 09 2010 11:09
4 respuestas en este tema
#1
Escrito 09 septiembre 2010 - 11:09
#2
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.
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.
#3
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:
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:
Espero con esto se entienda
Fleon xD
delphi
procedure TForm1.rgFiltroClick(Sender: TObject); begin case rgFiltro.ItemIndex of 0: Tabla1.Sort := 'NAME ASC, LASTNAME ASC'; 1: Tabla1.Sort := 'LASTNAME ASC, NAME ASC'; 2: Tabla1.Sort := 'CODE ASC'; end; 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
procedure TForm1.rgFiltroClick(Sender: TObject); begin case rgFiltro.ItemIndex of 0: DataSource.DataSet.Sort := 'NAME ASC, LASTNAME ASC'; 1: DataSource.DataSet.Sort := 'LASTNAME ASC, NAME ASC'; 2: DataSource.DataSet.Sort := 'CODE ASC'; end; end;
Espero con esto se entienda
Fleon xD
#4
Escrito 09 septiembre 2010 - 11:48
Puedes hacer los siguiente:
delphi
procedure TForm1.rgFiltroClick(Sender: TObject); begin case rgFiltro.ItemIndex of 0: TCustomADODataSet(DataSource1.DataSet).Sort := 'NAME ASC, LASTNAME ASC'; 1: TCustomADODataSet(DataSource1.DataSet).Sort := 'LASTNAME ASC, NAME ASC'; 2: TCustomADODataSet(DataSource1.DataSet).Sort := 'CODE ASC'; end; end;
#5
Escrito 09 septiembre 2010 - 11:57
Muchas gracias enecumene, me funciona de perlas !!!
Fleon xD
Fleon xD