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)
-   -   Maestro/detalle pierdo detalle con -1 (https://www.clubdelphi.com/foros/showthread.php?t=86226)

atani123 03-07-2014 11:18:24

Maestro/detalle pierdo detalle con -1
 
Tengo 2 tablas, Master (id, codigo, nombre) y Detalle (id, id_Master, Direccion). Estan relacionadas mediante Master.id = Detalle.id_Master

Cuando hago una insercion me queda algo como esto.

Master
id = -1
codigo = '001'
nombre = 'jose'

Detalle linea 1
id = 1
id_Master = -1
Direccion = 'Pelayo 110'

Detalle linea 2
id = 2
id_Master = -1
Direccion = 'Caspe 35'

Detalle linea 3
id = 3
id_Master = -1
Direccion = 'Diputacion 8'


El caso es que cuando hago el post del Master, el id -1 cambia por el que toca y no me lo cambia en las lineas de detalle, por lo que quedan en el limbo.

¿Como deberia programar esto?

Al González 03-07-2014 17:19:52

Obtén y asigna el ID correcto desde que empieza la captura del registro maestro. ^\||/

atani123 03-07-2014 17:29:29

Pero existe el tipico problema de cancelacion, es decir, le asigno un numero ej el 8., entra otro usuario, le asigna el 9. Ahora si cancelamos la del 8, se nos quedara el hueco. ¿no?

cloayza 03-07-2014 17:37:55

No siempre de gana amigo... :D La opción que te indica el honorable forero Al González es completamente válida.

Saludos cordiales

roman 03-07-2014 17:45:39

Cita:

Empezado por atani123 (Mensaje 478629)
Pero existe el tipico problema de cancelacion, es decir, le asigno un numero ej el 8., entra otro usuario, le asigna el 9. Ahora si cancelamos la del 8, se nos quedara el hueco. ¿no?

Si la numeración debe ser correlativa (sin huecos) entonces tu enfoque es correcto. No indicas que base usas pero la opción más sencilla, si tu motor lo permite, es establecer una restricción de llave foránea del tipo ON UPDATE ... CASCADE para que sea el mismo motor el que actualice la llave foránea cuando cambies la de la tabla maestra.

Si esto no es posible pues tampoco sería difícil obtener el ID asignado al maestro después del POST y hacer tú mismo la actualización.

// Saludos

Al González 03-07-2014 19:07:00

Cita:

Empezado por atani123 (Mensaje 478629)
Pero existe el tipico problema de cancelacion, es decir, le asigno un numero ej el 8., entra otro usuario, le asigna el 9. Ahora si cancelamos la del 8, se nos quedara el hueco. ¿no?

Es mejor usar llaves primarias artificiales (en el foro hay varios hilos que tratan sobre ello): Son IDs que el usuario no conoce y que no importa si llevan huecos o no, su único requisito es que sean únicos a nivel de la tabla. Para numerar registros de forma consecutiva recomiendo un campo aparte (Numero, Codigo, Clave), el cual sí es visible y sí representa algo para el usuario.

Un saludo.


La franja horaria es GMT +2. Ahora son las 10:17:53.

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