FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#1
|
|||
|
|||
Orden En Tabla
Hola amigos del foro, estoy migrando a Firebird 2.0, mi aplicacion que usa paradox, entre otras maneja 7 tablas sin indice primario, lo cual me permite mantener el orden segun donde se inserta el registro. Para hacerlo en Firebird con un indice primario, al hacer una consulta me devuelve los datos de la tabla ordenado segun el campo primario, como puedo hacer para ver la tabla como lo hacia en paradox.
Si el usuario inserta un registro en el renglon 21 de la tabla, quiero que al hacer la consulta, el renglon se vea en el mismo lugar. Gracias |
#2
|
|||
|
|||
Hola
primero suponemos que tienes un campo ID primary key luego añadele un campo que sea el orden crea un indice unique key para que no repita valores y vaya rapido al ordenar. Al insertar comprueba donde estas insertando y si insertas en la posicion 50 antes deberas hacer update orden=orden+1 de todos los registros con orden>=50. si quieres al hacer delete del registro 50 puedes hacer update orden=orden-1 de todos los registros con orden>=50. Tambien si cambias de lugar el registro debes hacer los updates correspondientes. Todo esto lo puedes montar con codigo delpho o bien con los triggers de la BD before_insert,before_update,after_delete. Yo lo utilizo para ordenar las linias de un albaran tal como las meta el usuario entonces la tabla linias_albaran tiene el UK que es Cabecera_albaran_id+orden; con un Id como PK Otra solucion que yo utilize pero que no me gusta es que el campo orden sea double precision y asignarle siempres el valor medio entre su anterior y posterior registro. Espero haberte podido ayudar |
#3
|
||||
|
||||
ID en firebird
Una manera sencilla sería poner un generador para el identificador.
Y en el trigger before insert llamarlo y obtener el id. Otra manera, creo yo mas razonable, es desde el código delphi hacer la cosa en dos pasos. Lo primero sería un select buscando el último nro de ID ingresado, a ver: ...iniciamos la transaccion y todo eso.
Luego, con eso ya podemos hacer el insert sin problemas:
...terminamos la transacción y listo. Por último, eso de no tener clave primaria en una tabla no es bueno, procura siempre tenerla. Espero te sirva. Esto no es lo mejor pero funciona bastante bien.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. Última edición por santiago14 fecha: 21-07-2008 a las 19:03:13. Razón: Me faltó el "+ 1" en el Select |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Orden en una hoja | vivamotos | Servers | 0 | 10-04-2008 09:18:53 |
Orden de los Campos en una Tabla | sinalocarlos | MS SQL Server | 3 | 21-11-2006 20:34:28 |
Ordenar (ch ll ) tabla dbase por orden alfabetico latino universal | javi90 | Conexión con bases de datos | 0 | 16-02-2005 18:34:39 |
Consulta SQL para cambiar el orden natural de los campos de una tabla | txemag | Firebird e Interbase | 4 | 23-07-2004 19:15:08 |
Urgente. insercion en tabla de SQL sin orden asendente? | danytorres | SQL | 5 | 19-12-2003 23:08:18 |
|