Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Ordenacion Tabla (https://www.clubdelphi.com/foros/showthread.php?t=3331)

jfloro 02-09-2003 22:37:46

Ordenacion Tabla
 
Tengo una tabla para las referencias, cuya clave primaria es un campo cod.referencia de tipo caracter(tabla Paradox), si voy creando datos de la siguiente forma se ordenan asi:

IdReferencia----------La forma correcta sería esta:
---------------- ---------------------------------------
10/0------------------------------------> 10/0
10/00----------------------------------->10/00
10/1------------------------------------->10/1
10/2------------------------------------->10/2
100/0----------------------------------- >11/0
100/1----------------------------------- >11/1
100/2------------------------------------>100/0
11/0------------------------------------- >100/1
11/1------------------------------------- >100 /2

¿Cómo podría solucionar sin tener que definir una clave primaria compuesta por dos campos? (Un campo el q va delante de la '/' y el segundo la segunda parte)

andres1569 03-09-2003 01:50:23

Hola:

En primer lugar debo decirte que no se debe postear un mismo mensaje en varios hilos, antes de ponerlo piensa bien dónde crees que encaja mejor. Si no me equivoco, esta misma pregunta la has colocado en el foro de SQL, y dos veces en el de OOP. Esto último supongo porque no te gustaba cómo quedaba redactada la primera vez. Para cambiar la redacción de un mensaje, dispones del botón Editar, justo debajo a la derecha del mismo.

De momento, te dejo este hilo abierto porque opino que es aquí donde encaja mejor (en SQL no queda mal tampoco pero creo que la solución no pasa por cambiar nada en la sentencia SQL sino en la forma de almacenar el campo). Tú mismo tienes también la opción de Borrar un mensaje que hayas colocado, por lo que te animo a borrar el resto de posts con el mismo asunto. Si no me equivoco -que algún otro moderador me corrija- si borras un post que aún no tiene respuestas, se borra todo el hilo.

Sobre lo que preguntas, creo que la solución pasa, si no deseas tener dos campos indexados, por almacenar esos códigos de referencia anteponiendo ceros a la izquierda, de forma que ese campo en todos los registros tenga el mismo nº de caracteres, ten en cuenta que es la única manera de que se ordene correctamente un campo string. Ya que trabajas en Paradox, esa corrección la puedes hacer en el evento BeforePost de la tabla en cuestión, o bien en los eventos OnValidate / OnSetText del campo. Pero si no quieres que te aparezcan los ceros delanteros al visualizar los códigos, tendrías que interceptar el evento OnGetText del campo y ahí apañar la cadena que visualizará el usuario.

Yo no desecharía la idea de tener dos campos indexados (de tipo Integer ambos), a la hora de mostrarlo en pantalla podrías crearte un campo calculado para la ocasión, donde colocarías la barra separadora "/". Lá única pega importante que le veo es si esos códigos van a actuar como clave foranea en otra tabla, personalmente opino que las claves foráneas deben ser de un único campo.

Un saludo


La franja horaria es GMT +2. Ahora son las 14:50:34.

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