none
Como actualizar los datos de una tabla hija en una relación RRS feed

  • Pregunta

  • Tengo una tabla padre que contiene unos MEDIDORES y una hija que contiene ASO_MED_INST (medidores vs. instancias). La tabla MEDIDORES se llena mediante un proceso almacenado que devuelve a traves de un parametro OUTPUT el GUID_medidor que se asigna al momento de crearlo.
    Estan planteadas en un Dataset como MEDIDORES y ASO_MED_INST, unidas mediante una relación + restricción Foreign Key de cascada en todas las reglas.
    La idea es crear MEDIDORES usando un DataGridView y asociarle las instancias en el mismo form en que se crean usando ASO_MED_INST en otro DataGridView.

    Este es el codigo de la funcion btnSave_click(...) del form:

     

    this.Validate();

     

    this.bsMEDIDORES.EndEdit();

     

    this.taMEDIDORES.Update(this.dS_REVMAINT2009.MEDIDORES);

     

    this.bsASO_MED_INST.EndEdit();

     

    this.taASO_MED_INST.Update(this.dS_REVMAINT2009.ASO_MED_INST);

    El problema es que me realiza los cambios en la base de datos unicamente en la tabla MEDIDORES, dejando sin cambios la tabla ASO_MED_INST, al parecer, al llamar a this.taMedidores.Update(...), el cual efectivamente actualiza de manera correcta el valor de GUID_medidor en ambos DataGridView, tambien me cambia el estado de las filas (RowState) de las hijas a sin cambios (Unchanged), por lo que al llamar a la función de actualización de la segunda tabla this.taASO_MED_INST.Update(), esta no realiza cambios en la base de datos.

    ¿Como debo hacer para poder ingresar las filas nuevas de la tabla ASO_MED_INST con el GUID_medidor que retorna al ingresar los datos de MEDIDORES)?
    miércoles, 17 de junio de 2009 4:54

Todas las respuestas

  • Hola.

    Te voy Sugerir lo siguiente:

    Debe crear la relación desde base de datos o esquema de datos (*.xsd)

    Ejemplo: Medidores.Idmedidores = ASO_MED_INST.Idmedidores , relación ( 1 a muchos)
    Recuerda que en la practica debe especificar: Medidores.Idmedidores, es Clave Principal y autonumerico

    Luego debe enlazar tu base de datos con la aplicación para generar archivo *.XSD con su clase relacionada.

    finalmente desde la ventana  Window Data Source (Ventana de Origen de datos) debe arrastrar la tabla Medidores al formulario (primer DataGridView) y posteriormente dentro la tabla Medidores debe aparecer una tabla hija la cual es el detalle en cuestion; que tambien debe ser arrastrada al formulario como segundo dataGridView.

    Importante orden en el codigo: primero Update a Medidores y luego ASO_MED_INST.
    Por defecto no necesita trabajar con Stored Procedure, puede cambiar el comportamiento a posterior

    Ojo este planteamiento es para el caso de estar trabajando con Window Data Source!!!


    Saludos.

    Sí te fue de utilidad, por favor marca como respuesta!

    Developer .NET
    domingo, 31 de enero de 2010 17:44