none
Access Eliminar un registro de una sola tabla desde un formulario que maneja 3 tablas

    Question

  • Tengo 3 tablas: 

    -equipos: con todos los equipos disponibles y las características detalladas de c/u.

    -sucursales: con la ubicación, plantas, dimensiones y otros detalles de cada sucursal.

    -eventos: con el registro de préstamo de equipos a las diferentes sucursales.

    En el formulario de eventos despliego 4 cuadros combinados(2 de equipos y 2 de sucursales),  para escojer lo que se utilizará en el evento y en que sala de cada sucursal, etc.  Adicionalmente agrego la información del evento, motivo, fecha, duración , etc.

    Mi problema es que cuando intento borrar un evento,  me esta borrando también el registro de la tabla de equipos o de la tabla sucursales a las que hacen referencia los cuadros combinados.

    Utilizo el botón de borrado de Access o el comando VBA "DoCmd.RunCommand acCmdDeleteRecord"

    pero me sucede lo mismo.  Como puedo hacer para que solo me borre el registro de la tabla eventos.

    Gracias de antemano

    Wednesday, January 23, 2013 1:42 AM

All replies

  • Hola

    ¿Tienes establecida relaciones entre las tablas, con la actualización y eliminación en cascada marcadas?

    Salu2,


    José Mª Fueyo [MS MVP Access]

    Wednesday, January 23, 2013 3:48 PM
  • Debe ser lo que expone JM Fueyo, al parecer, activaste la integridad referencial y marcaste eliminar en cascada.
    Wednesday, January 23, 2013 3:53 PM
  • Hola,  No tengo establecida ninguna relación entre las tablas. Es más,  la hoja de relaciones esta vacía.  Si se puede activar la eliminación en cascada desde otro sitio lo hice sin saberlo. :(  

    Cómo desactivo esto?

    De momento he tomado  el boton de macro "eliminar registro" de access y le cambiado la instrucción "Ejecutar comando - eliminar registro" por  "Ejecutar codigo - Borra(Id_auto)"

    Y he definido Borra:

    Public Function BORRA(temp As Integer)
        DoCmd.RunSQL "Delete * From eventos Where Id_auto=" & temp

       DoCmd.RunCommand acCmdRefresh

    End Function

    (en ID_auto tengo un autonumérico de la tabla eventos.)  y de momento me funciona,  pero me pone Eliminado en todos los campos de eventos y sigue apareciendo en pantalla.  Mi problema ahora es que a menos que salga del formulario no me refresca la pantalla,  pero eso ya me busco la vida.   

    Muchas gracias por todo.

    • Edited by pcordova69 Thursday, January 24, 2013 2:28 AM
    Thursday, January 24, 2013 12:36 AM
  • Hola

    Esa es la mejor forma, con una sentencia SQL. De ese modo tienes control tortal.

    Salu2,


    José Mª Fueyo [MS MVP Access]

    Thursday, January 24, 2013 10:16 AM