Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Update con Adoquery (https://www.clubdelphi.com/foros/showthread.php?t=85659)

nicolasjavier 15-04-2014 02:59:15

Update con Adoquery
 
Hola, estoy intentando hace un UPDATE en una tabla de mi base, a traves de un query, conectado a su respectivo datasource.
"Puntos_de_venta" es mi tabla y "Desc_PtoVta y Sigla_PtoVta" son los campos que quiero actualizar, por el contenido que esta en editdescpvm.text y editsigpvm.text respectivamente. El problema es que me tira error EOleException y me dice que el nombre de la columna "el texto que tiene el editdescpvm.text" no es válido, y no puedo solucionarlo. Alguien sabe porque me toma el valor del edit como columna en vez de como el valor para actualizar el campo?
Les dejo el codigo:

begin
Querypvmok.Close;
Querypvmok.SQL.Add('Update Puntos_de_Venta ');
querypvmok.SQL.Add('set Desc_PtoVta='+editdescpvm.Text+',');
querypvmok.SQL.Add('Sigla_PtoVta= '+editsigpvm.Text);
querypvmok.SQL.Add('where Id_PtoVta='+editcodpvm.Text);
querypvmok.ExecSQL;
end;


Graciaaaaaaaasss

ecfisa 15-04-2014 04:05:40

Hola nicolasjavier.

Cuando incluyas código en tus mensaje recuerda usar TAG's para darle más legibilidad:


En cuanto a tu consulta, proba de este modo:
Código Delphi [-]
  with Querypvmok do
  begin
    Close;
    SQL.Clear;
    SQL.Add('UPDATE PUNTOS_DE_VENTA');
    SQL.Add('SET DESC_PTOVTA = :DTO, SIGLA_PTOVTA = :SIG');
    SQL.Add('WHERE ID_PTOVTA = :IDP');
    Parameters.ParamByName('DTO').Value:= editdescpvm.Text;
    Parameters.ParamByName('SIG').Value:= editsigpvm.Text;
    Parameters.ParamByName('IDP').Value:= editcodpvm.Text;
    ExecSQL;
  end;

Saludos :)

nicolasjavier 15-04-2014 05:04:56

Gracias por la recomendacion!!, Voy a probar a ver si asi funciona.

nicolasjavier 15-04-2014 17:12:05

Cita:

Empezado por nicolasjavier (Mensaje 475159)
Gracias por la recomendacion!!, Voy a probar a ver si asi funciona.

Código Delphi [-]
 Querypvmok.Close;
 Querypvmok.SQL.TEXT:='Update Puntos_de_Venta set Desc_PtoVta= '+QuotedStr(editdescpvm.Text)+
                          ',Sigla_PtoVta= '+QuotedStr(editsigpvm.Text)+' where Id_PtoVta='+QuotedStr(editcodpvm.Text);
 querypvmok.ExecSQL;

Lo solucione de esta manera! Gracias por la ayuda (:

ecfisa 15-04-2014 18:30:05

Hola nicolasjavier.

Si, de esa manera también funciona.

No te lo mencioné por que por varios motivos trabajar de ese modo no es buena práctica, en especial por que expone tu código al peligro de la Inyección SQL

Saludos :)


La franja horaria es GMT +2. Ahora son las 11:57:01.

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