Ver Mensaje Individual
  #7  
Antiguo 28-02-2014
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 915
Reputación: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Amigo NISOTO, si me permite le sugiero intente realizar este proceso de actualización con un procedimiento almacenado.

A mi humilde opinión es más optimo que el que propone usted.

Adjunto script sql, no le he provado debido a lo cual es posible que pueda tener algun error. No dude en consultar.

Ademas usted debe completar los campos que faltan y definir los tipos correspondientes a las variables declaradas.

Código SQL [-]
CREATE OR ALTER PROCEDURE SP_UPDATENOTAS()
AS
--Declaración de las variables locales
DECLARE VARIABLE ID_NOTA INTEGER; --Identificador del registro de NOTAS 
DECLARE VARIABLE AULAS INTEGER;

DECLARE VARIABLE MATERIA_UNO VARCHAR(20); --Definir tipo correcto
DECLARE VARIABLE IHS_UNO INTEGER;
DECLARE VARIABLE DOCENTE_UNO VARCHAR(10);
...
DECLARE VARIABLE MATERIA_DOCE VARCHAR(20);
DECLARE VARIABLE IHS_DOCE INTEGER;
DECLARE VARIABLE DOCENTE_DOCE VARCHAR(10);

BEGIN
  FOR SELECT ID_NOTA, AULAS 
    FROM NOTAS
    INTO :ID_NOTA, :AULAS
  DO
  BEGIN
     --Recupera información del salon correspondiente a :AULAS
     SELECT MATERIA_UNO, IHS_UNO, DOCENTE_UNO, 
        MATERIA_DOS, IHS_DOS, DOCENTE_DOS, ....
        MATERIA_DOCE, IHS_DOCE, DOCENTE_DOCE
     FROM SALONES 
     WHERE SALONES.ID_SALON=:AULAS
     INTO :MATERIA_UNO, :IHS_UNO, : DOCENTE_UNO, 
          :MATERIA_DOS, :IHS_DOS, : DOCENTE_DOS, ....
        :MATERIA_DOCE, : IHS_DOCE, : DOCENTE_DOCE;
     
     UPDATE NOTAS
         SET ASIGNATURA_UNO=:MATERIA_UNO,
          INTENSIDAD_UNO=:IHS_UNO,
          PROFESOR_UNO   =:  DOCENTE_UNO,
           
          ASIGNATURA_DOS=:MATERIA_DOS,
          INTENSIDAD_DOS=:IHS_DOS,
          PROFESOR_DOS   =: DOCENTE_DOS,
           ...
          ASIGNATURA_DOCE=:MATERIA_DOCE,
          INTENSIDAD_DOCE=:IHS_DOCE,
          PROFESOR_DOCE   =: DOCENTE_DOCE
     WHERE NOTAS.ID_NOTA=:ID_NOTA; --Debe especificar la clave del registro nota para su correcta actualización...
  END
END

Para ejecutar el procedimiento almacenado debería utilizar un

Código Delphi [-]
//Usando TIBStoredProc1, de la paleta Interbase.

DMCarga.IBStoredProc1.StoreProcName:='SP_UPDATENOTAS';
DMCarga.IBStoredProc1.ExecProc;
DMCarga.ibtrnsctn_Calificacion.CommitRetaining;

ShowMessage('Operacion realizada con exito...');
Ejemplos hay varios en el foro

Saludos cordiales

Última edición por cloayza fecha: 28-02-2014 a las 18:40:35.
Responder Con Cita