Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-11-2003
vetustas vetustas is offline
Miembro
NULL
 
Registrado: oct 2003
Posts: 77
Poder: 16
vetustas Va por buen camino
Ordenar en un grid

Cómo hago para ordenar los datos en un grid segun un campo concreto? no uso consultas sql.
Responder Con Cita
  #2  
Antiguo 05-11-2003
Ruben_Cu Ruben_Cu is offline
No confirmado
NULL
 
Registrado: oct 2003
Ubicación: Mariel, Cuba
Posts: 271
Poder: 0
Ruben_Cu Va por buen camino
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;
Se ordenará de acuerdo al campo asociado al índice.
Saludos y suerte
Responder Con Cita
  #3  
Antiguo 05-11-2003
vetustas vetustas is offline
Miembro
NULL
 
Registrado: oct 2003
Posts: 77
Poder: 16
vetustas Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 06-11-2003
Ruben_Cu Ruben_Cu is offline
No confirmado
NULL
 
Registrado: oct 2003
Ubicación: Mariel, Cuba
Posts: 271
Poder: 0
Ruben_Cu Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 19-11-2003
fortran fortran is offline
Miembro
NULL
 
Registrado: may 2003
Ubicación: Asturias
Posts: 63
Poder: 16
fortran Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 19-11-2003
Avatar de Osorio
Osorio Osorio is offline
Miembro
NULL
 
Registrado: may 2003
Ubicación: Colombia
Posts: 250
Poder: 16
Osorio Va por buen camino
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...
Responder Con Cita
  #7  
Antiguo 19-11-2003
SLAKE SLAKE is offline
Miembro
NULL
 
Registrado: sep 2003
Ubicación: Murcia
Posts: 11
Poder: 0
SLAKE Va por buen camino
Si el table, query o ClientDataset es detalle, ¿funciona?
__________________
No siempre lo más urgente es lo más importante.
Responder Con Cita
  #8  
Antiguo 19-11-2003
fortran fortran is offline
Miembro
NULL
 
Registrado: may 2003
Ubicación: Asturias
Posts: 63
Poder: 16
fortran Va por buen camino
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.
Responder Con Cita
  #9  
Antiguo 19-11-2003
Avatar de roman
roman roman is offline
Moderador
NULL
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.207
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
Cita:
fortran comentó:
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?
Ejemplo:

Código:
Query1.Sql.Text := 'select * from tabla';
Query1.Open;
Si la tabla es muy grande tardará bastante en reunir todos los datos.

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
Responder Con Cita
  #10  
Antiguo 19-11-2003
fortran fortran is offline
Miembro
NULL
 
Registrado: may 2003
Ubicación: Asturias
Posts: 63
Poder: 16
fortran Va por buen camino
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 18:33:39.
Responder Con Cita
  #11  
Antiguo 19-11-2003
Avatar de roman
roman roman is offline
Moderador
NULL
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.207
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
Cita:
fortran comentó:
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?.
La pérdida de índices no es, en realidad nada grave ni dramático más allá de tener que suspender momentáneamente a los clientes para regenerar los índices. Para ello únicamente hay que borrar manualmente los archivos *.xg* y *.yg0 y volverlos a definir con el Database desktop o similar. Desde luego conviene tener, como mínimo, apuntados cuáles son estos índices ya que la mayoría de veces no podrás siquiera ver la estructura de la tabla cuando un índice se daña. Lo mejor sería crear unas rutinas en Delphi que se encarguen de crear los índices para que sea sólo cosa de oprimir un botón.

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
Responder Con Cita
  #12  
Antiguo 20-11-2003
fortran fortran is offline
Miembro
NULL
 
Registrado: may 2003
Ubicación: Asturias
Posts: 63
Poder: 16
fortran Va por buen camino
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.
Responder Con Cita
  #13  
Antiguo 21-11-2003
Avatar de roman
roman roman is offline
Moderador
NULL
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.207
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
Cita:
fortran comentó:
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.
Cuando te lo propones no hay nada demasiado grande como para no hacerlo.

Cita:
fortran comentó:

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?.
Esto no te servirá ya que difícilmente los índices del respaldo estarán sincronizados con los registros actuales y lo más seguro es que obtengas un error "Index Out Of Time" (algo así).

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 primera línea agrega el índice primario. Los índices primarios no tienen nombre y deben construirse antes que los demás.

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
Responder Con Cita
  #14  
Antiguo 21-11-2003
Avatar de roman
roman roman is offline
Moderador
NULL
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.207
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
¡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
Responder Con Cita
  #15  
Antiguo 23-11-2003
Avatar de Osorio
Osorio Osorio is offline
Miembro
NULL
 
Registrado: may 2003
Ubicación: Colombia
Posts: 250
Poder: 16
Osorio Va por buen camino
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
Responder Con Cita
  #16  
Antiguo 27-11-2003
fortran fortran is offline
Miembro
NULL
 
Registrado: may 2003
Ubicación: Asturias
Posts: 63
Poder: 16
fortran Va por buen camino
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:
Román comentó:
Recién expuse el comentario anterior me hablaron para informarme que había un problema con el sistema, ¿cuál crees?
jajaja, ya sabes Román, lo mejor es no hablar (o como decimos por aquí... no escupir "parriba", que siempre termina cayendo).

__________________
- ¿Y cuando dejaré de aprender maestro?.

- El día que te mueras pequeño saltamontes.
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


La franja horaria es GMT +2. Ahora son las 12:15:30.


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