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 Firebird (https://www.clubdelphi.com/foros/showthread.php?t=91989)

Enrique Ccz 20-06-2017 17:29:10

Update Con Firebird
 
Hola buenos días soy nuevo en esto el problema que tengo es el siguiente al momento de ejecutar mi update en teoría tendría que hacer el cambio en el registro en el que uno esta posicionado y actualmente lo realiza en todos los registros al igual al ejecutar la sentencia desde un boton es necesario cerrar y volver abrir el programa para ver reflejados los cambios me gustaria que me ayudaran a solucionar esto.

Saludos.

Código Delphi [-]
DATAMODULE6.FDQuery3.Close;
DATAMODULE6.FDQUERY3.SQL.Text:= 'UPDATE PAGA_M01 SET AUTORIZA = :AUTORIZA WHERE DOCTO =:DOCTO';
DATAMODULE6.FDQuery3.ParamByName('Autoriza').AsString:=EDIT1.TEXT;
DATAMODULE6.FDQuery3.ExecSQL;

Caminante 20-06-2017 17:32:13

Hola

Haz confirmado la transaccion despues del update???

Adicionalmente en el codigo que muestras no veo que le des valor al parametro del where

Enrique Ccz 20-06-2017 17:42:12

Me imagino que te refieres a poner commit ?

Caminante 20-06-2017 18:53:24

Si exactamente

Enrique Ccz 21-06-2017 16:20:58

SI le agrego al final el commit.

Igual me gustaría saber como seria la sentencia para que me cambiara al dar click en el registro en el que estoy posicionado si el campo se tiene el valor de "NO"
al dar click me lo cambie en automático a "SI", ya que con el update que actualmente tengo me cambia todos los registros de la tabla



Código Delphi [-]
DATAMODULE6.FDQuery3.Close;
DATAMODULE6.FDQUERY3.SQL.Text:= 'UPDATE PAGA_M01 SET AUTORIZA = "SI" WHERE DOCTO =:DOCTO';
DATAMODULE6.FDQuery3.ParamByName('SI').AsString:= 'SI';
DATAMODULE6.FDQuery3.ExecSQL;

ecfisa 21-06-2017 17:05:11

Hola.

Código Delphi [-]
  DATAMODULE6.FDQuery3.Close;
  DATAMODULE6.FDQuery3.SQL.Text := 'UPDATE PAGA_M01 SET AUTORIZA = ''SI'' WHERE DOCTO = :DOCTO';
  DATAMODULE6.FDQuery3.ParamByName('DOCTO').AsString := 'EL_DOCTO_QUE_CORRESPONDA'; // (*)
  DATAMODULE6.FDQuery3.ExecSQL;
(*) Indicador unívoco de la fila que queres modificar

Saludos :)

lupinfree 22-06-2017 19:25:56

puede ser que le falte el SQL.CLEAR??
entre el close y el text

Pregunto el ExecSQL abre la consulta o hay que poner Open?

Casimiro Notevi 22-06-2017 20:42:42

Cita:

Empezado por lupinfree (Mensaje 518592)
puede ser que le falte el SQL.CLEAR??
entre el close y el text

No. porque con sql.text se está asignando la cadena de texto, y esta sustituye a lo que haya antes.

Cita:

Empezado por lupinfree (Mensaje 518592)
Pregunto el ExecSQL abre la consulta o hay que poner Open?

Open es para select. Para el resto es execsql.

YellowStone 05-07-2017 13:56:59

Buenas.

Supongo que la query realiza el cambio correctamente en la base de datos.

Pero tendrás que preocuparte de "refrescar" los datos que tengas en la pantalla para ver los cambios.

Un saludo.


La franja horaria es GMT +2. Ahora son las 00:36:51.

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