Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Modificar Registro de DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=54184)

BlueSteel 11-03-2008 14:50:00

Modificar Registro de DBGrid
 
Hola Amigos

me he estado cabezeando... para poder recordar como modificar un registro que lo muestro a través de un DBGrid... (no me acuerdo si se podia hacer..)

Estoy trabajando con un IBQuery... un DataSource y un DBGrid...

la consulta del IBQuery es la sgte

Código Delphi [-]
     Datos.IBQ_Select.Close;
     Datos.IBQ_Select.SQL.Clear;
     Datos.IBQ_Select.SQL.Add('Select * From "Movimiento"');
     Datos.IBQ_Select.SQL.Add('Where "Mov_Mes"=:Var1');
     Datos.IBQ_Select.SQL.Add('Order By "Per_Nro"');
     Datos.IBQ_Select.Params[0].AsInteger := StrToInt(Edit1.Text);
     Datos.IBQ_Select.Open;

en donde muestra todos los registros de mes 1 al 12 (según corresponda)..

necesito poder modificar o actualizar en forma directa un dato específico en el DBGrid.. pero no me deja...? alguien tiene una idea de como hacerlo???

Tambien puse DBEdit de los campos para poder modificarlos a través de ese componente pero tampoco me deja modificarlos

Me acuerdo que con el component Query del DBE se tenia que cambiar la propiedad Requestlive y funcionaba... pero con el IBQuery no se donde habilitar la edición ???

marcoszorrilla 11-03-2008 15:04:33

Me da la impresión que vas a tener que utilizar el componente:

TIBUpdateSQL


Un Saludo.

BlueSteel 11-03-2008 15:15:45

Ok...

gracias... ahorita buscare como funciona...

BlueSteel 11-03-2008 15:46:20

Uso del TIBUpdateSQL
 
Bueno...

Ya agrege el componente TIBUpdateSQL y lo enlace al componente IBQuery correpondiente

La tabla a Actualizar se llama Movimiento y su estructura es, en donde solo quiero modificar los campos que muestro en rojo

Mov_Nro
Per_Nro
Mov_Limp
Mov_Ire
Mov_Mov
Mov_Pmed
Mov_Leys
Mov_Ctah2
Mov_Cper
Mov_Colac
Mov_Onimp
Mov_Seguro1
Mov_Mes
Mov_Mafp
Mov_Mfam

Bueno, cuando pincho en el componente TIBUpdateSQL (doble Click), me aparece una pantalla que me permite generar las sentencias SQL...

y me genero las siguientes sentencias

ModifySQL
Código SQL [-]
size="1">update Movimiento
set
Mov_Nro = :Mov_Nro, Per_Nro = :Per_Nro, Mov_Limp = :Mov_Limp, Mov_Ire = :Mov_Ire, Mov_Mov = :Mov_Mov, 
Mov_Pmed = :Mov_Pmed, Mov_Leys = :Mov_Leys, Mov_Ctah2 = :Mov_Ctah2, Mov_Cper = :Mov_Cper, 
Mov_Colac = :Mov_Colac, Mov_Onimp = :Mov_Onimp, Mov_Seguro1 = :Mov_Seguro1, Mov_Mes = :Mov_Mes, Mov_Mafp = :Mov_Mafp, Mov_Mfam = :Mov_Mfam
where Mov_Nro = :OLD_Mov_Nro

InsertSQL
Código SQL [-]
size="1">insert into Movimiento
(Mov_Nro, Per_Nro, Mov_Limp, Mov_Ire, Mov_Mov, Mov_Pmed, Mov_Leys, 
Mov_Ctah2, Mov_Cper, Mov_Colac, 
Mov_Onimp, Mov_Seguro1, Mov_Mes, Mov_Mafp, Mov_Mfam)
values
(:Mov_Nro, :Per_Nro, :Mov_Limp, :Mov_Ire, :Mov_Mov, :Mov_Pmed, :Mov_Leys, :Mov_Ctah2, :Mov_Cper, :Mov_Colac,
:Mov_Onimp, :Mov_Seguro1, :Mov_Mes, :Mov_Mafp, :Mov_Mfam)

DeleteSQL
Código SQL [-]
size="1">delete from Movimiento
where Mov_Nro = :OLD_Mov_Nro

RefreshSQL
Código SQL [-]
size="1">Select 
Mov_Nro, Per_Nro, Mov_Limp, Mov_Ire, Mov_Mov, Mov_Pmed, Mov_Leys, Mov_Ctah2, Mov_Cper, Mov_Colac, Mov_Onimp, Mov_Seguro1, Mov_Mes,
Mov_Mafp, Mov_Mfam 
from Movimiento 
where Mov_Nro = :Mov_Nro

Luego, voy al DBgrid correpondiente (donde ya esta todo enlazado..).. quiro modificar un valor, me lo permite hacer, pero cuando salgo y vuelvo a entrar, el valor no se ha actualizado

que podrá ser ??

marcoszorrilla 11-03-2008 16:00:33

Has probado a cerrar y volver a abrir la conexión, para ver si es problema de que la rejilla no actualizado los cambios en la fuente?

Un Saludo.

BlueSteel 11-03-2008 16:10:43

Cita:

Empezado por marcoszorrilla (Mensaje 272323)
Has probado a cerrar y volver a abrir la conexión, para ver si es problema de que la rejilla no actualizado los cambios en la fuente?

Un Saludo.

Si... ya lo probé...

Cerre Conexión con Base, desactive consultas IBQuery... Desactive IBTransaction...

Cerre programa... reinicie PC... y nada...

Cuando hice la modificación, me cambio el dato. pincho actualizar para que me muestra otros resultados (con la misma consulta para ver si se cambio el valor).. y me muestra el dato antiguo...

Tambien probé realizando la modificación... sali del modulo... volví a ingresar al modulo.. realice consulta.. y pan.. el valor siguie allí...

Tambien probé lo anterior.. pero saliendo del sistema y volviendo a ingresar ??

:confused:

egostar 11-03-2008 19:10:30

Hola amigo BlueSteel, ya probaste con la función ApplyUpdates, yo tenia ese problema y con eso lo solucioné.

Código Delphi [-]
procedure TFPropiedadesExtension.SpeedButton1Click(Sender: TObject);
begin
  DataModule1.IBDSExtensiones.ApplyUpdates;
  FMenu.ItemsModificados := True;
end;

Salud OS


La franja horaria es GMT +2. Ahora son las 19:58:03.

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