Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ordenar datos en IBDataSet (https://www.clubdelphi.com/foros/showthread.php?t=42192)

niñotaliban 06-04-2007 12:27:54

Ordenar datos en IBDataSet
 
Hola, quisiera poder ordenar las columnas de un dbgrid, buscando por este foro he encontrador algunas soluciones que me gustan pero todas hacen uso de ADODataSet y su propiedad Sort, la cuestión es que yo utilizo IBDataSet y en él no encuentro la propiedad Sort ni algo que se le parezca. Seguro que IBDataSet tiene alguna propiedad o metodo para ordenar pero la verdad es que no la encuentro.

Como me las arreglo para ordenar los datos en un IBDataSet??

gluglu 06-04-2007 12:33:12

Hay que volver a ejecutar el IBDataSet, mediante un Close y Open correspondiente, y cambiar en la sentencia SQL el 'Order By' que deseas. :o

niñotaliban 06-04-2007 12:40:55

ok
 
aaaah ok! me suele suceder que me sumerjo buscano entre las propiedades y metodos de algun componente y se me olvida la de cosas que se pueden hacer directamente en la sentencia SQL, tan simple como hacer un ORDER BY jejeje

ahora mismo adapto el metodo para ordenar el dbgrid que mas me ha gustado y si funciona lo pongo aquí para que alguien lo encuentre rapido jejeje

grácias gluglu.

niñotaliban 07-04-2007 14:03:06

bueno pues al final se me ha simplificado bastante el metodo, aquí lo dejo para contribuir un poquito.

bAsc es una variable global que utilizo como semáforo.
OrderBy és un string donde guardo la parte de la sentencia que su nombre indica.


Código Delphi [-]
procedure dbgBuscarTitleClick(Column: TColumn);
begin
inherited;
if (bAsc)then
begin
OrderBy := 'ORDER BY '+Column.DisplayName+ ' ASC';
end else
begin
OrderBy := 'ORDER BY '+Column.DisplayName+ ' DESC';
end;
LanzarSentencia;
bAsc:= not bAsc;
end;





LanzarSentencia es el encargado de montar las diferentes partes de la sentencia (select, from, where y orderby) y ejecutarla, es algo parecido a esto:


Código Delphi [-]
procedure LanzarSentencia;
begin
with IBDataPrincipal do
begin
Close;
SelectSQL.Clear;
SelectSQL.Add(Select);
SelectSQL.Add(From);
SelectSQL.Add(Where);
SelectSQL.Add(OrderBy);
Open;
end;
end;






...ya sé que tendria que hacer paso de parametros en vez de tanta variable global pero la cosa aún no está moldeada jejeje solo és funcional.


La franja horaria es GMT +2. Ahora son las 11:33:01.

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