Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   error de campos (https://www.clubdelphi.com/foros/showthread.php?t=57094)

(MAJ) 05-06-2008 07:48:09

error de campos
 
hola a todos, tengo u problema con la sentencia update del sql ya que tengo una base de datos de 10 campos y cuando quiero hacer un up date me dice que me falta un parametro este es el codigo
Código Delphi [-]
begin
if application.MessageBox('Esto modificará el registro a la Base de Datos     ¿Está seguro?','Alerta', MB_ICONEXCLAMATION + MB_OKCANCEL)=MrOK
        then begin
        preparo_modificacion;
    dm.consulta.ExecSQL;
    end
        else Modificar.ModalResult:=mrnone;
end;
procedure tModificar.preparo_modificacion;
begin
with dm.consulta do
 begin
  Close;
  SQL.Clear;
  SQL.Add('update Alumnos');
  SQL.Add('set legajo_alu= (:legajo), nombre_alu = :nombre, dni_alu= :dni, apellido_alu= :apellido, direccion_alu= :direccion, telefono_alu= :telefono, movil_alu= :movil, libreta_alu= :libreta, pase_alu= (:pase_d_colegio), estado_alu= (:estado)');
  ParamByName('legajo').AsInteger:=strtoint(edlegajo_alu.Text);
  ParamByName('nombre').AsString:=ednom_alu.Text;
  ParamByName('apellido').AsString:=edap_alu.Text;
  ParamByName('dni').AsInteger:=strtoint (eddni_alu.Text);
  ParamByName('direccion').AsString:=eddir_alu.Text;
  ParamByName('telefono').AsInteger:=strtoint(edtel_alu.Text);
  ParamByName('movil').AsInteger:=strtoint(edmovil_alu.Text);
  ParamByName('libreta').AsBoolean:=True;
  ParamByName('pase_d_colegio').AsBOOLEAN:=TRUE;
  ParamByName('estado').AsBoolean:=True;
  open;
 end;
end;
gracias de antemano
p/d disculpen si no se entiende que quiero

defcon1_es 05-06-2008 11:32:25

Hola.
en vez de usar el método OPEN, usa el método ExecSQL.

BlueSteel 05-06-2008 15:32:35

Hola (MAJ)

Bueno, aparte de lo que te dijo defcon1_es, de que tienes que terminar la sentencia con un ExecSQL y no con un OPEN, tambien agregaria una sentencia más como
Código SQL [-]
Where Codigo_Alumno := Codigo.
Esto es por que con el codigo que tienes estarás actualizando todos los registros de tu tabla Alumnos con los datos que estas ingresando, por lo cual te falta identificar que registro quieres actualizar....de modo que te debe quedar algo así

Código Delphi [-]
with dm.consulta do
 begin
  Close;
  SQL.Clear;
  SQL.Add('update Alumnos');
  SQL.Add('set legajo_alu= (:legajo), nombre_alu = :nombre, dni_alu= :dni, apellido_alu= :apellido, direccion_alu= :direccion, telefono_alu= :telefono, movil_alu= :movil, libreta_alu= :libreta, pase_alu= (ase_d_colegio), estado_alu= (:estado)');
  SQL.Add('where codigo_alu =:codigo');
  ParamByName('legajo').AsInteger:=strtoint(edlegajo_alu.Text);
  ParamByName('nombre').AsString:=ednom_alu.Text;
  ParamByName('apellido').AsString:=edap_alu.Text;
  ParamByName('dni').AsInteger:=strtoint (eddni_alu.Text);
  ParamByName('direccion').AsString:=eddir_alu.Text;
  ParamByName('telefono').AsInteger:=strtoint(edtel_alu.Text);
  ParamByName('movil').AsInteger:=strtoint(edmovil_alu.Text);
  ParamByName('libreta').AsBoolean:=True;
  ParamByName('pase_d_colegio').AsBOOLEAN:=TRUE;
  ParamByName('estado').AsBoolean:=True;
  ParamByName('codigo').AsString:= Codigo.Text;
  ExecSQL;
 end;



Acuerdate que para realizar un select, se utiliza OPEN, para realizar un Insert, Delete o Update se utiliza un ExecSQL;


Salu2:p:D

(MAJ) 12-06-2008 07:01:20

muchas gracias por sus respuestas amigos no me di cuenta de mi error :pahora si anda de 10 y gracias por tu consejo blue :D


La franja horaria es GMT +2. Ahora son las 11:02:52.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi