FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Ordenar en un grid
Cómo hago para ordenar los datos en un grid segun un campo concreto? no uso consultas sql.
|
#2
|
|||
|
|||
Hola vetustas, si no usas sql y usas ttable tienes que crear índices secundarios para los campos que quieras ordenar y entonces asociar estos índices en tiempo de ejecusión a la propiedad IndexFieldNames, por ejemplo:
Código:
TuTabla.IndexFieldNames:=nombre del índice declarado; Saludos y suerte |
#3
|
|||
|
|||
He estado leyendo sobre eso. Yo trabajo con bases de datos Paradox y al parecer lo que me dices solo funciona con bases de datos sql (interbase,etc.) y claro, no me funciona. Me desaparece la información del grid al hacer eso.
|
#4
|
|||
|
|||
Hola vetustas, no se donde leistes pero lo que esta claro es que la ordenación de registros se logra de la manera que te comente, funciona con perfectamente TTable en paradox.
Leete la ayuda de delphi y fijate que tambien lo puedes hacer con la propiedad IndexName obteniendo el mismo resultado. Saludos |
#5
|
|||
|
|||
A mi con D5 y Paradox me ha funcionado perfectamente. Gracias Ruben_Cu.
__________________
- ¿Y cuando dejaré de aprender maestro?. - El día que te mueras pequeño saltamontes. |
#6
|
||||
|
||||
Teniendo en cuenta que en las tablas paradox es muy frecuente encontrarse problemas de corrupcion cuando se trabaja con indices secundarios (sobre todo si tienes problemas de fluido electrico) lo mejor seria que realices una consulta para mostrar los datos en el DBGrid.
Al realizar la consulta la puedes traer ordenada por el campo que necesites. Buena suerte... |
#7
|
|||
|
|||
Si el table, query o ClientDataset es detalle, ¿funciona?
__________________
No siempre lo más urgente es lo más importante. |
#8
|
|||
|
|||
Hola Osorio:
Gracias por la contestación (y sobre todo por la aclaración). La verdad es que el tema de las Query no lo domino. No obstante me surge una duda ¿Es recomendable hacer una query sobre toda una tabla?, en caso de hacerla ¿como se haría?, ¿me podrías dar un ejemplo sencillo? Gracias por anticipado.
__________________
- ¿Y cuando dejaré de aprender maestro?. - El día que te mueras pequeño saltamontes. |
#9
|
||||
|
||||
Cita:
Código:
Query1.Sql.Text := 'select * from tabla'; Query1.Open; Para el problema específico yo me quedaría con los índices. Personalmente he trabajado con Paradox y muchos índices secundarios sin haber tenido ningún problema significativo. Paradox trabaja mucho mejor con componentes Table que con Query. En este caso la reordenación mediante un query requiere volver a consultar la base y eso se nota bastante al momento de dar el click en la columna. Mucho más rápido si sólo cambiamos de índices. // Saludos |
#10
|
|||
|
|||
Muchas gracias Román por tu pronta respuesta. Me has confirmado lo que solamente intuía. .
En caso de esa corrupción de los índices de la que tanto oigo hablar ¿se pueden recuperar los contenidos de algún modo? ¿o se pierden irremisiblemente?. Un saludo
__________________
- ¿Y cuando dejaré de aprender maestro?. - El día que te mueras pequeño saltamontes. Última edición por fortran fecha: 19-11-2003 a las 17:33:39. |
#11
|
||||
|
||||
Cita:
La pérdida de índices no implica la pérdida de datos. Los registros siguen ahí, sólo que no los puedes acceder con índices corruptos. En cuanto borras los archivos de índices puedes volver a abrir las tablas. Y como te comenté anteriormente, es cierto que alguna vez he tenido que rgenerar los índices pero si ha sido un par de veces en cuatro años ya es mucho decir. // Saludos |
#12
|
|||
|
|||
Muchas gracias Roman, no sabes lo que me alivia que la solución a la corrupción de los índices sea tan sencilla. Lo de crear la rutina en Delphi para regenerar los índices creo que se me queda un poco grande para mi aunque me parece una idea muy interesante. Lo único que se me ha ocurrido es tener los ficheros *.xg* e *.yg0 respaldados con otro nombre y cuando se corrompan los índices borrar los originales y renombrar los respaldos ¿es correcto eso?. . Seguro que hay maneras mejores de hacerlo ¿verdad?.
Un saludo y gracias nuevamente.
__________________
- ¿Y cuando dejaré de aprender maestro?. - El día que te mueras pequeño saltamontes. |
#13
|
||||
|
||||
Cita:
Cita:
Lo de la rutina para regenerar los índices no es nada complicada. Aquí te pongo un ejemplo: Código:
Table1.AddIndex('', 'id', [ixPrimary], ''); Table1.AddIndex('ix_nombre', 'nombre', [ixCaseInsensitive], ''); La segunda línea agrega un índice secundario llamado 'ix_nombre' con la opcíon de se insensible a mayúsculas y minúsculas. Realmente es muy sencillo. Consulta la ayuda de Delphi acerca de este método (AddIndex) para ver qué es lo que se pone en los parámetros. // Saludos |
#14
|
||||
|
||||
¡Vaya! Pues casos de la vida real.
Recién expuse el comentario anterior me hablaron para informarme que había un problema con el sistema, ¿cuál crees? "Index out of Date" Contrario a lo que recomiendo yo no tengo hecha la rutina para regenerar los índices. Pero no he perdido mi trabajo ni mucho menos. Me tomó diez minutos regenerarlos manualmente. // Saludos |
#15
|
||||
|
||||
Comentario:
Yo sigo pensando que es mejor hacer la consulta desde el Query o el ClientDataset, sobre todo desde este ultimo ya que no requiere la conexion constante con la BD. Asi, le exijo un poquito mas al el PC pero no me meto en lios con los indices corruptos. Sucede que a veces fallan justo cuando la empresa está trabajando en procesos criticos y estan de mucho afan (ley de morphy) ahhh y ademas ese dia no te encuentras en la ciudad (jejeje otra ley mas de morphy). saludos |
#16
|
|||
|
|||
Está claro que tengo que optar por la solución de Osorio o por hacer la rutina, ya que el programa que estoy haciendo se va a utilizar a unos 980 Km de mi casa por lo que la segunda ley de Murphy que anunció Osorio se va a cumplir casi siempre.
Cita:
__________________
- ¿Y cuando dejaré de aprender maestro?. - El día que te mueras pequeño saltamontes. |
|
|
|