Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Modificar registro con Query (https://www.clubdelphi.com/foros/showthread.php?t=59617)

Alexandro 02-09-2008 18:51:42

Modificar registro con Query
 
Hola a todos:
Tengo una gran duda que no se como darle solución y es por eso que me encuentro aki. Veran, yo tengo una tabla paradox 7 con x numeros de registros. Ahora bien, como yo puedo modificar esos registros con un Query? Yo lo que heco es poner un boton con 1 edit y un boton. EN el boton le puse la sgte sentencia.
Código Delphi [-]
  
With FrmAlmacen.QFiltrar do
    begin
      Close;
       Sql.Text:='UPDATE Almacen.db SET Ubicacion:valor, Observaciones: valor1';
       Params[0].AsString:=EdtUbicacion.Text;
       Params[1].AsString:=EdtObservaciones.Text;
      Open;
    end;
Al hacer esto me da un error que dice: "Invalid use of keyword. Token: ?".
No se a que se debe. Por favor si saben como ayudarme espero lo hagan.
Gracias de antemano.

dec 02-09-2008 18:58:38

Hola,

La consulta SQL podría ser tal que este modo:

Código SQL [-]
UPDATE Almacen.db SET Ubicacion = 'valor', Observaciones = 'valor1'

Pero, piensa que lo normal es acotar la actualización tal que:

Código SQL [-]
UPDATE Almacen.db SET Ubicacion = 'valor', Observaciones = 'valor1' WHERE CampoClave = N;

Puesto que de otro modo actualizarías todos los registros... y tal vez no sea eso lo que quieras.

maeyanes 02-09-2008 18:59:27

Hola...

Para ejecutar este tipo de SQL debes usar el método ExecSQL de TQuery...

Ahora, tu query está mal formada:

Código Delphi [-]
with FrmAlmacen.QFiltrar do
begin
  Close;
  Sql.Text:='UPDATE Almacen.db SET Ubicacion = :valor, Observaciones = :valor1';
  Params[0].AsString:=EdtUbicacion.Text;
  Params[1].AsString:=EdtObservaciones.Text;
  ExecSQL
end

Pero si te fijas bien, ese update lo que va a hacer es modificarte todos los registros de la tabla con los valores que le estás enviando. Para actualizar solo un registro necesitas especificarlo mediante la cláusula WHERE. Puedes hacer algo así:

Código Delphi [-]
Sql.Text:='UPDATE Almacen.db SET Ubicacion = :valor, Observaciones = :valor1 where Id = :Id';
// ...
Params[2].AsString := 'Identificador de campo';


Saludos...

TOPX 02-09-2008 19:00:34

Hola,

Se debe a que en la sentencia Sql, falta la asignación de los parámetros...

Código SQL [-]
UPDATE Almacen.db 
SET Ubicacion = :valor, 
Observaciones = :valor1

Uhm, ese Update actualiza todos los registros, tal vez deba especificarle un Where para que actualice los registros apropiados.

TOPX 02-09-2008 19:01:41

changos... llegué de tercero :(

dec 02-09-2008 19:03:13

Hola,

No te preocupes TOPX, los terceros serán los primeros, lo dice un libro mu famoso. ;)

TOPX 02-09-2008 19:05:38

Cita:

Empezado por dec (Mensaje 311146)
No te preocupes TOPX, los terceros serán los primeros [sic]

Bueno, gracias, dec :D

Alexandro 02-09-2008 19:18:41

Gracias por contestar:
Ya he resuelto el problema. 1000 gracias.
Suerte.

Alexandro 02-09-2008 19:51:01

Hey chicos:
Disculpen que los vuelva a molestar. Hice lo que me digeron, o sea esto:
Código Delphi [-]
  
With FrmAlmacen.QFiltrar do
    begin
      Close;
       Sql.Text:='UPDATE Almacen.db SET Ubicacion :valor, Observaciones :valor1 WHERE ID :Identificador';
       Params[0].AsString:=EdtUbicacion.Text;
       Params[1].AsString:=EdtObservaciones.Text;
       Params[2].AsInteger:=FrmAlmacen.Identificador;
      ExecSQL;
    end;

Esto esta perfecto, pero me da el mismo error. Echenle un vistazo al codigo que les puse arriba e indiquenme donde esta el error. Que es lo que está mal?
Gracias y disculpen la molestia

Delphius 02-09-2008 20:08:23

Hola Alexandro,
Te estás comiendo los iguales antes de los parámetros. Como que estás con un poquito de hambre:D
Código Delphi [-]
'campo = :El_parametro'

Saludos,

Alexandro 02-09-2008 20:37:09

Gracias Delphius. La verdad es que no me daba cuenta. Y por cierto...no tengo hambre :D.
Suerte y sigue así.
Hasta pronto


La franja horaria es GMT +2. Ahora son las 11:45:59.

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