Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-06-2008
(MAJ) (MAJ) is offline
Miembro
 
Registrado: abr 2007
Posts: 71
Poder: 18
(MAJ) Va por buen camino
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= (ase_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
Responder Con Cita
  #2  
Antiguo 05-06-2008
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 21
defcon1_es Va por buen camino
Hola.
en vez de usar el método OPEN, usa el método ExecSQL.
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #3  
Antiguo 05-06-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Cool

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
__________________
BlueSteel

Última edición por BlueSteel fecha: 05-06-2008 a las 15:35:48.
Responder Con Cita
  #4  
Antiguo 12-06-2008
(MAJ) (MAJ) is offline
Miembro
 
Registrado: abr 2007
Posts: 71
Poder: 18
(MAJ) Va por buen camino
muchas gracias por sus respuestas amigos no me di cuenta de mi error ahora si anda de 10 y gracias por tu consejo blue
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error en DBE con ODBC (faltan campos) asomar Conexión con bases de datos 0 14-01-2005 10:09:28
Error con el POST en campos autoincrementables raffagia SQL 4 09-10-2004 14:52:51
error, Interbase y delphi, edicion campos Blob athos Conexión con bases de datos 0 16-07-2004 21:51:09
error sumando campos weke SQL 2 02-06-2004 14:52:33
error en asignacion de campos en un dbgrid con seleccion multiple ElSanto24 Varios 1 05-01-2004 17:12:27


La franja horaria es GMT +2. Ahora son las 07:27:38.


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