Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   problemas con el UPDATE (https://www.clubdelphi.com/foros/showthread.php?t=38026)

huwabe78 29-11-2006 22:33:36

problemas con el UPDATE
 
Q tal, en un form donde debo actualizar unos datos que me muestra en unos edit me tira un error de UPDATE, lo curioso es que lo unico que hice fue modificar los edit de otra secuencia de otro form, el codigo es el siguiente:

procedure TModificaciones_productos.Button_modificar(Sender: TObject);
begin
ADOQuery1.close;
ADOQuery1.SQL.clear;
ADOQuery1.SQL.add ('UPDATE productos SET producto="'+Edit_prod.Text+'",precio='+Edit_precio.Text+',stock='+Edit_stock.Text+',tipo_prod="'+Edi t_tipo.Text+'"');
ADOQuery1.SQL.add ('WHERE codigo = '+Edit_codigo.Text+'');
ADOQuery1.open;
try
except
end;
end;

EL ERROR EXACTO QUE ME TIRA ES: Error de sintaxis en la instrucción UPDATE.

desde ya muchas gracias.

roman 29-11-2006 22:37:20

Lo más sencillo en estos casos para evitar dar palos de ciego, es que examines cuál es la sentencia final que queda en la propiedad ADOQuery1.SQL. Si hay algún error en la manera en que se concatena la sentencia, te darás cuenta mucho más rápido.

// Saludos

huwabe78 29-11-2006 22:46:37

Roman te pido disculpas, pero la verdad es que no entiendo a que te referis con lo de la sentencia final, ya que como dije anteriormente esa sentencia es la copia modificada de un anterior que si funciona.

roman 29-11-2006 22:53:47

Me refiero a que pongas algo como:

Código Delphi [-]
procedure TModificaciones_productos.Button_modificar(Sender: TObject);
begin
  ADOQuery1.close;
  ADOQuery1.SQL.clear;
  ADOQuery1.SQL.add ('UPDATE productos SET producto="'+Edit_prod.Text+'",precio='+Edit_precio.Text+',stock='+Edit_stock.Text+',tipo_prod="'+Edi t_tipo.Text+'"');
  ADOQuery1.SQL.add ('WHERE codigo = '+Edit_codigo.Text+'');

  ShowMessage(ADOQuery1.SQL.Text); // <--- AQUÍ VES LA SENTENCIA FINAL

  ADOQuery1.open;
  try
  except
  end;
end;

Para que veas como quedó la sentencia. Es posible que el problema venga del valor que tiene alguno de los Edits, por ejemplo, que esté vacío.

// Saludos

ramiretor 30-11-2006 00:47:45

Hola:
Te has fijado que el "Where" está pegado con la parte anterior de la sentencia SQL?

Saludos

vtdeleon 30-11-2006 02:36:42

Cita:

Empezado por ramiretor
Te has fijado que el "Where" está pegado con la parte anterior de la sentencia SQL?

No aplica, porque esta usand Add() para insertar la cadena de la consulta y por cada Add pasa (o salta) a la siguiente linea. Si estuviera concatenandolo (+), pues ahi si aplica.

Saludos

Nelet 30-11-2006 13:10:24

Podria ser por las puñeteras comillas??.
Suponiendo que producto, tipo_prod y código son strings.

Código Delphi [-]
procedure TModificaciones_productos.Button_modificar(Sender: TObject);
begin
ADOQuery1.close;
ADOQuery1.SQL.clear;
ADOQuery1.SQL.add ('UPDATE productos SET producto='+quotedstr(Edit_prod.Text)+',precio='+Edit_precio.Text+',stock='+Edit_stock.Text+',tipo_pr  od='+quotedstr(Edit_tipo.Text));
ADOQuery1.SQL.add ('WHERE codigo = '+quotedstr(Edit_codigo.Text));
ADOQuery1.open;
try
except
end;
end;

Lepe 30-11-2006 13:44:48

Al final los que damos palos de ciegos somos nosotros.

Si no das con el resultado, comenta de qué tipo son cada campo y también qué base de datos estas usando.

Saludos.


La franja horaria es GMT +2. Ahora son las 08:00:32.

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