![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
|
Reordenar consecutivo
Hola amigos del club delphi dento el siguiente problemilla quiero q en el momento de eliminar un registro de una tabla se reordene la llave primaria que es un campo incremental es decir por ejemplo tengo lo siguientes registros:
Código:
id nombres apellidos
334 LUIS PEREZ
335 CAMILO MEDINA
336 ARMANDO BUITRAGO
337 OMAR RODIGUEZ
Código:
id nombres apellidos
334 LUIS PEREZ
335 ARMANDO BUITRAGO
336 OMAR RODIGUEZ
donde PRIMERO es el registro que estoy borrando y ULTIMO es el ultimo registro de la tabla, el problema con este codigo es que no me permite borrar barrios registros a la vez. Espero que me puedan ayudar. Se me olvidaba trabajo con firebird 2.0 y DELPHI 7. |
|
#2
|
||||
|
||||
|
Pero, ¿para qué quieres hacer esto? En mi opinión es una complicación innecesaria y propensa a errores. ¿Qué pasa, por ejemplo, si tienes accesos simultáneos? Tus llaves se pueden hacer un desbarajuste.
Una llave primaria tendría que ser inamovible, sobre todo si es llave foránea en otras tablas. // Saludos |
|
#3
|
||||
|
||||
|
Absoluta y totalmente de acuerdo con Román, ¿qué ocurre ahora con los datos de facturas o de cualquier otra tabla (depende de tu programa) que estén relacionados con ese código?, le estarías asignado facturas a otros clientes!!!
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#4
|
||||
|
||||
|
Esto lo controlo con triggers para que no se facture a otros clientes, ademas lo debo hacer hacer para tener el consecutivo de los clientes.
|
|
#5
|
||||
|
||||
|
ademas esto no es precisamente para una tabla de clientes, es que el ejemplo lo hice de esta forma, es para una tabla de pedidos y necesito conservar el consecutivo de cada pedido asi borren alguno en cualquier momento, luego renumerar el ID
|
|
#6
|
||||
|
||||
|
Pero, si por ejemplo, el pedido es del cliente 100 y borras el cliente 90. Tras la renumeración el cliente 100 ahora será el 99. Y el pedido que era del cliente 100 ahora quedará huérfano o pertenecerá al "nuevo" cliente 100, que antes era el 101.
De todas formas, debes buscar otra forma de hacer eso, no es nada factible, salvo que sea un campo más de la tabla, pero no la clave principal.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#7
|
||||
|
||||
|
Casimiro Gracias por responder, pero te cuento que esto no es de una tabla de clientes es solo un ejemplo q se me ha ocurrido lo quiero hacer es con una tabla de Pedidos donde la PK no es foranea en ninguna otra tabla o q deseo es q en el momento de eliminar un pedido se reorganicen los numeros de pedidos.
|
|
#8
|
||||
|
||||
|
Pues tendrás que hacerlo con un bucle, por ejemplo, ordenas por nombre (por ejemplo) y luego lo vas recorriendo de principio a fin y le vas poniendo el código que toque.
Algo así: Código:
query.close;
query.selectsql.text := 'select * from tbclientes order by apellidos, nombre';
query.open;
iNumero := 1;
while not query.eof do
begin
query.edit;
query.fieldbyname('codigo').asinteger := iNumero;
query.post;
query.next;
inc( iNumero );
end;
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#9
|
||||
|
||||
|
Gracias casimiro pero de esta forma me salta que el ID ya existe y da error de primary key ya existe.
|
|
#10
|
||||
|
||||
|
Cita:
Código:
query.close;
query.selectsql.text := 'select * from tbclientes order by apellidos, nombre';
query.open;
iNumero := 1;
while not query.eof do
begin
if query.fieldbyname('codigo').asinteger <> iNumero then
begin
query.edit;
query.fieldbyname('codigo').asinteger := iNumero;
query.post;
end;
query.next;
inc( iNumero );
end;
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Reordenar la salida de una consulta | afxe | Conexión con bases de datos | 0 | 03-02-2009 12:06:07 |
| reordenar indices foxpro | cmm07 | Varios | 0 | 02-12-2007 23:30:12 |
| Consecutivo con While | Camilo | Conexión con bases de datos | 2 | 02-12-2007 22:44:08 |
| Id Consecutivo en Paradox | Anabel | Conexión con bases de datos | 19 | 01-12-2005 08:44:24 |
| Reordenar indices en Paradox | pablo | Conexión con bases de datos | 1 | 01-07-2004 07:33:54 |
|