none
NO se como poner el IF RRS feed

  • Pregunta

  • Hola


    Tengo una duda

    si tengo una tabla que se llama EMPLEADO con la variable EmpCod(Codigo de empleado)
     
    y en otra tabla Lista mando a llamar el EmpCod(cualquier empleado que tenga agregado)


    en eso no hay probleama el problema es que si yo quiero en mi formulario de Empleadoal  borrar el EmpCod uno (o cualquier empleado), pero este mismo esta ya llamado por le tabla de Lista, quieor que me tire un mensaje que diga:
    No se puede borrar el EmpCod uno porque esta haciendno utilizada en la tabla de Lista.

    la programacion va asi:

     private void btnInsertar_Click(object sender, EventArgs e)
            {
                switch (this.ModoFormulario)/////modoOperacion
                {
                    case eModoFormulario.consulta:
                        this.consultar(EmpCod);
                        break;
                    case eModoFormulario.adicionar:
                        this.insertar();
                        break;
                    case eModoFormulario.modificar:
                        this.modificar();
                        break; 
                    case eModoFormulario.eliminar:
                        this.Eliminar();
                        break;
                    default:
                        break;
                      
                }
               ClearControls();
            }

     private void Eliminar()
            {

                Empleado miEmpleado = new Empleado();
                miEmpleado.EliminarEmpleado(Int32.Parse(this.txtEmpleado.Text));
                MessageBox.Show("EL Empleado fue eliminado con exito");
           
            }

    private void FormularioEmpleados_Load(object sender, EventArgs e)
            {
                switch (this.ModoFormulario)
                {
                    case eModoFormulario.consulta:
                        break;
                    case eModoFormulario.adicionar:
                        break;
                    case eModoFormulario.modificar:
                        this.txtEmpleado.Enabled = false;
                        this.consultar(this.EmpCod);
                        break;
                    case eModoFormulario.eliminar:
                        this.txtEmpleado.Enabled = false;
                        this.txtDescripcionEmpleado.Enabled = false;
                        this.consultar(this.EmpCod);
                        break;
                    default:
                        break;
                }
            }


    nose ocmo poner ese if, por favor mr ayudan?

    miércoles, 2 de septiembre de 2009 15:17

Respuestas

  • Hola SetMeFree,

    por lo que veo estás utilizando LinQToSql o bien ado.net Entity Framework. En realidad lo que pretendes creo que debería ser un tema de la base de datos. A esto se le conoce como integridad referencial. No puedes eliminar una clave de una tabla que es clave foranea en otra si esta última tiene filas enlazadas con la clave a eliminar. Yo creo que, si tienes correctamente configuradas las tablas en la base de datos, al intentar hacer el Delete, se lanzará una excepción que tu podrás capturar y tartar convenientemente. Más que un If, yo creo que deberías tratar el tema de esa forma.

    Te dejo estos links acerca de la integridad referencial:

    http://msdn.microsoft.com/es-es/library/cc483581(VS.71).aspx

    http://www.aulaclic.es/sql/b_8_1_1.htm



    En caso de que la respuesta te sirva, porfavor, márcala como válida

    Muchas gracias y suerte!


    Javier Jiménez Roda


    MCP (Microsoft Certified Professional)
    MCTS (Microsoft Certified Technology Specialist)
    MCPD (Microsoft Certified Professional Developer)
    Blog: http://jimenezroda.wordpress.com

    • Marcado como respuesta SetMeFree miércoles, 2 de septiembre de 2009 17:50
    miércoles, 2 de septiembre de 2009 16:03

Todas las respuestas

  • Hola SetMeFree,

    por lo que veo estás utilizando LinQToSql o bien ado.net Entity Framework. En realidad lo que pretendes creo que debería ser un tema de la base de datos. A esto se le conoce como integridad referencial. No puedes eliminar una clave de una tabla que es clave foranea en otra si esta última tiene filas enlazadas con la clave a eliminar. Yo creo que, si tienes correctamente configuradas las tablas en la base de datos, al intentar hacer el Delete, se lanzará una excepción que tu podrás capturar y tartar convenientemente. Más que un If, yo creo que deberías tratar el tema de esa forma.

    Te dejo estos links acerca de la integridad referencial:

    http://msdn.microsoft.com/es-es/library/cc483581(VS.71).aspx

    http://www.aulaclic.es/sql/b_8_1_1.htm



    En caso de que la respuesta te sirva, porfavor, márcala como válida

    Muchas gracias y suerte!


    Javier Jiménez Roda


    MCP (Microsoft Certified Professional)
    MCTS (Microsoft Certified Technology Specialist)
    MCPD (Microsoft Certified Professional Developer)
    Blog: http://jimenezroda.wordpress.com

    • Marcado como respuesta SetMeFree miércoles, 2 de septiembre de 2009 17:50
    miércoles, 2 de septiembre de 2009 16:03


  • Correcticimo no podie eliminar nada, porque faltaria al aintegridad referencial

    GRacias muy interesante, aprendi sobre la integridad referencial
    miércoles, 2 de septiembre de 2009 17:50