SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: Allwars en Miércoles 8 de Junio de 2011, 12:27

Título: Indexado en tabla paradox
Publicado por: Allwars en Miércoles 8 de Junio de 2011, 12:27
Buenas!
Me presento en el foro creando este tema que me trae por el camino de la amargura.

He creado una base de datos en paradox 7 con la aplicación DataBase Desktop que trae Builder c++, luego con un DataSource, un Table y un Dbgrid la he asociado y demás.
La idea es que necesito ordenar la tabla alfabéticamente, he buscado información por todos sitios pero nada me funciona,
el problema básicamente es que mi tabla no tiene index, porque la propiedad IndexName e IndexFieldNames me dan siempre errores del tipo Index doesnt exist.

He mirado en mil y una webs, como añadir índices y demás, pero la idea es que en todos esos casos la tabla se genera después crear los índices.
Podría decirme alguien como añadirlos a una tabla ya existente? o si hay algún otro método para ordenar la tabla en función del campo'

Gracias de antemano.
Título: Re: Indexado en tabla paradox
Publicado por: Unsire en Jueves 9 de Junio de 2011, 01:58
En lugar de un TTable usa un TQuery y haz una consulta de la forma:
Query1->SQL->Add("SELECT LastName,FirstName FROM employee ORDER BY Lastname");
Título: Re: Indexado en tabla paradox
Publicado por: Allwars en Jueves 9 de Junio de 2011, 20:04
Muchas gracias por responder, he probado tu código y parece que estoy mas cerca de dar con el fallo, la idea es que me he puesto
en el evento de clickar en un botón esto:
Query1->Close();
Query1->SQL->Add("SELECT Apellidos,Nombre FROM Usuarios ORDER BY Apellidos");
Query1->Open();
Cuando clicko de primeras, no pasa nada y si vuelvo a clickar entonces me tira un el siguiente error:

Invalid use of keyword, Token: select
Título: Re: Indexado en tabla paradox
Publicado por: Unsire en Viernes 10 de Junio de 2011, 02:16
Prueba de la siguiente forma:

Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("SELECT Apellidos,Nombre FROM Usuarios ORDER BY Apellidos");
Query1->Open();

Y si quieres que te los ordene de forma ascendente agrega ASC al final o DESC para descendente.
Título: Re: Indexado en tabla paradox
Publicado por: Allwars en Viernes 10 de Junio de 2011, 21:40
Al incluir el Clear() la aplicación no da error, pero no se producen ningun cambio en la tabla,
¿no hay que utilizar ningún update ni nada por el estilo?
Título: Re: Indexado en tabla paradox
Publicado por: Allwars en Sábado 11 de Junio de 2011, 23:01
El hecho de que "no hiciera nada" es porque yo estaba visualizando la tabla y en ella no se ven los cambios del query.
Si visualizo en el DBgrid el query, la ordenación es correcta, pero no se aplican los cambios, es decir, cada vez que abro el
query la ordenación anterior no se queda guardada.
He probado con query1->post pero me da un error de que el datasheet es de solo lectura, he modificado los parametros RequestLive a true
así como que unidirectional esté en false... pero nada no hay manera.
Título: Re: Indexado en tabla paradox
Publicado por: Unsire en Lunes 13 de Junio de 2011, 03:45
A ver, a ver, a ver. Me parece que andamos medio confundidos. La información que tengas en una tabla siempre va a aparecer como haya sido introducida, al final de todos los registros existentes, y si lo que quieres es ordenar los datos de una tabla ya existente y que todo eso se guarde entonces lo que tienes que hacer es una consulta ORDEY BY, enviar todos esos datos a una nueva tabla y después sustituir la tabla vieja, solo así se puede hacer, porque el Query es para hacer consultas, si quieres modificar tienes que usar UPDATE, etc.