Ver Mensaje Individual
  #1  
Antiguo 28-03-2017
yuyidt yuyidt is offline
Miembro
NULL
 
Registrado: oct 2016
Posts: 40
Reputación: 0
yuyidt Va por buen camino
Question Modificar registro sin crear uno nuevo

Buenas. se me esta presentado el siguiente problema:
tengo resgistros agregados en la bdd. En un formulario a través de el evento onchange de un edit busco ese registro, por supuesto el id de los registros es incremental,
por ejemplo tengo un registro con el id 19, cuando abro el form me llena de una vez el edit del id con el numero 20,
el asunto es que cuando hago una búsqueda en el edit del los resgistros existentes y voy actualizar dicho registro, al darle guardar, no se me actualiza el registro, sino que me crea otro con el id siguiente al que esta guardado en la tabla. No se que me esta faltando, necesito ayuda por favor.
codigo de onchange del edit:
Código Delphi [-]
procedure TForm5.Edit3Change(Sender: TObject);
begin
with datamodule2.FDQuery3 do
  begin
    close;
        sql.Text:='SELECT * FROM eva_maestro where id_exa=:idex';
        parambyname('idex').AsString:=edit3.Text;
    open;
        edit1.Text:=datamodule2.FDQuery3.FieldByName('nombre_examen').AsString;
  end;
with datamodule2.FDQuery7 do
  begin
  Close;
  SQL.Clear;
  SQL.Add('SELECT eva_maestro.id_exa, eva_detalle.tipo_pregunta, eva_detalle.pregunta,eva_detalle.opcion1,eva_detalle.opcion2,eva_detalle.opcion3,eva_detalle.opcion4  ,eva_detalle.respuesta');
  SQL.Add('FROM eva_maestro, eva_detalle');
  SQL.Add('WHERE eva_maestro.id_exa = eva_detalle.id_exama');
  SQL.Add('AND eva_detalle.id_exama = :idexa');
  ParamByName('idexa').AsString:= edit3.Text;
  Open;
  end;
  Bitbtn3.Enabled:= (Edit3.Text <> '');
end;


Codigo del boton donde guardo los nuevos registros y las actualizaciones:
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,puntos) SELECT '+
                    inttostr(a)+',pregunta,tipo_pregunta,Opcion1,Opcion2,Opcion3,Opcion4,respuesta,puntos FROM eva_estudiantes WHERE ced_est=:cedes';
        ParamByName('cedes').Value:='i';
        ExecSQL;
        close;
        sql.Text:='TRUNCATE eva_estudiantes';
        execsql;
        datamodule2.FDQuery5.close;
        datamodule2.FDQuery5.close;
        limpiar;
      end;
    end;
end;
Ayuda por favor, quisiera modificar es el registro que se me muestra en los edit. cuyo id lo muestra el edit3

Última edición por Neftali [Germán.Estévez] fecha: 28-03-2017 a las 16:48:11. Razón: TAG's delphi
Responder Con Cita