Delphi - SQL UPDATE

 
Vista:

SQL UPDATE

Publicado por Carmen Muñoz (4 intervenciones) el 04/04/2003 06:58:40
Buenas noches o dias segun la hora en que lean esto, el problema que tengo es con esta sentencia sql la cual crei que estaba correcta pues cuando se ejecutaba el programa enviaba el mensaje que habia realizado la modificacion pero el registro supuestamente modificado queda intacto por favor chequen mi consulta haber en que me equivoque ahora muchas gracias por su atencion

Smodemple:=
' UPDATE '+
' Templeado.db '+
' SET Rpe=( " '+Erpe.text+ ' " ),Nombre=( " '+Enombre.text+ ' " ),Apellidos=( " '+Eapellido.text+' " ),Puesto=( " '+Epuesto.text+' " ),Area=( " '+Earea.text+' " ),Responsable=:respo '+
' WHERE (Puesto = " '+Erpe.text+' " ) ';

with Qmemple do
begin
close;
sql.clear;
sql.add(Smodemple);
Qmemple.ParamByName('respo').Asboolean:=Bresult;
ExecSQL;
showmessage('Modificado');
limpiar();
end;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:SQL UPDATE

Publicado por gonzalo (9 intervenciones) el 04/04/2003 12:33:12
lo mas seguro es que no encuentre el registro en cuestion. la consulta actualiza 0 registros (eso es correcto).

para depurarlo yo pondria un punto de ruptura en, por ejemplo, la linea "ExecSQL;" y cuando el programa se detenga ahi, miraria cual es el valor de "Qmemple.sql.text" (Ctrl+F7 para ver el valor).

luego me iria al PLSQL o al IBConsole o a Excel, segun... y ejecutaria la misma sentencia que he capturado para ver que esta fallando.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SQL UPDATE

Publicado por Ernesto D'Spirito (706 intervenciones) el 05/04/2003 10:53:19
Concuerdo con Gonzalo en que una posibilidad sea que no se encuentra el registro, y creería ver la causa en el código de tu consulta, ya que noto que has puesto gratuitamente espaciones dentro de las comillas dobles, por ejemplo:

' WHERE (Puesto="' + Erpe.text + '"';

Así, por ejemplo si Erpe.text valiera '123', el WHERE quedaría así:

WHERE (Puesto = " 123 " ) // espacios delante y atrás del valor.

Y no es lo mismo "123" que " 123 ".

Quita los espacios dentro de las comillas dobles. Ejemplo:

Smodemple:=
'UPDATE'+
' Templeado.db'+
' SET Rpe="' + Erpe.text + '", Nombre="' + Enombre.text + '", Apellidos="' + Eapellido.text + '", Puesto="' + Epuesto.text + '", Area="' + Earea.text + '", Responsable=:respo'+
' WHERE (Puesto="' + Erpe.text + '")';

Yo te sugeríría usar parámetros porque hacen mucho más legible la consulta, ya que te evitas de tener que poner las comillas y las concatenaciones a expensas de escribir más código (para asignar los valores de los parámetros).

Espero que mi observación te resulte últil.

Ernesto D'Spirito
http://www.latiumsoftware.com/es/index.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar