Ver Mensaje Individual
  #1  
Antiguo 23-03-2017
yuyidt yuyidt is offline
Miembro
NULL
 
Registrado: oct 2016
Posts: 40
Reputación: 0
yuyidt Va por buen camino
Question modificar tablas maestro_detalle

Hola buenas tardes. Presento el siguiente caso, espero me puedan ayudar.

Tengo una tabla maestro (eva_maestro), tabla detalle (eva_detalle) y una tabla temporal (eva_estudiantes)

1. En la tabla eva_maestro se guarda información referente a una evaluación (id_exa,nombre_examen,nota,fecha_inicio y fecha_final)
2. En la tabla eva_detalle se guardan las preguntas de la evaluación(id(de la pregunta),id_exama(campo que se relaciona con id_exa de eva_maestro),tipo_pregunta,pregunta,opcion1,opcion2,opcion3,opcion4,respuesta y puntos(de la pregunta)
3. En la tabla temporal se van guardando las preguntas mientras el examen aún no se guarda, una vez guardado el examen se vacía esta tabla y pasan los datos correspondientes a eva_maestro y eva_detalle(id(de la pregunta),ced_est,tipo_pregunta,pregunta,opcion1,opcion2,opcion3,opcion4,respuesta, y puntos)

//Lo que aparece en negrita son los campos de las tablas

Eso me lo guarda bien, el asunto esta que no se como hacer si quiero modificar ese examen, quizá cambiarle el nombre, las fechas, agregar o eliminar preguntas, etc.

En el formulario tengo un edit que es donde escribo el id del examen, en el evento onchange lo puse para que al escribir en el edit me aparezca automáticamente el examen si existe, si existe entonce me llena los edit del nombre, la nota, y las fechas de inicio y fin.

Codigo del boton guardar:

Código Delphi [-]
procedure TForm5.BitBtn1Click(Sender: TObject);
var
  a:integer;
  begin
    with datamodule2.FDQuery6 do
    begin
      close;
      sql.Text:='SELECT ced_est FROM eva_estudiantes WHERE ced_est=:cedes';
      ParamByName('cedes').Value:='i';
      open;
      begin
        close;
        sql.Text:='INSERT INTO eva_maestro (nombre_examen,fecha_ini,fecha_fin,nota) VALUES (:nomex,:feini,:fefin,:not)';
        ParamByName('nomex').Value:=edit1.Text;
        ParamByName('feini').value:=formatdatetime('YYYY-MM-DD',DateTimePicker1.Date);
        ParamByName('fefin').value:=formatdatetime('YYYY-MM-DD',DateTimePicker2.Date);
        Parambyname('not').Value:=combobox2.Text;
        ExecSQL;
        close;
        sql.Text:='SELECT max(id_exa) as ultimo FROM eva_maestro';
        open;
        a:=FieldByName('ultimo').AsInteger;
        close;
        sql.Text:='INSERT INTO eva_detalle (id_exama,pregunta,tipo_pregunta,Opcion1,Opcion2,Opcion3,Opcion4,respuesta) SELECT '+inttostr(a)+',pregunta,tipo_pregunta,Opcion1,Opcion2,Opcion3,Opcion4,respuesta FROM eva_estudiantes WHERE ced_est=:cedes';
        ParamByName('cedes').Value:='i';
        ExecSQL;
        close;
        sql.Text:='TRUNCATE eva_estudiantes';
        execsql;
      end;
    end;
end;

Que debería agregar para que me modifique el registro si existe?

En el botón eliminar, que debería agregar también para que me elimine el examen con sus respectivas preguntas?

Gracias de antemano

Última edición por Casimiro Notevi fecha: 23-03-2017 a las 22:05:50.
Responder Con Cita