Ir al contenido



Foto

Como actualizar TClientDataSet al cambiar DBEdit


Mejor respuesta giulichajari , 28 junio 2020 - 03:51

Bueno se soluciono usando el evento KeyUp de los DBEdit


delphi
  1. procedure TFPRODUCTOS.DBEdit6KeyUp(Sender: TObject; var Key: Word;
  2. Shift: TShiftState);
  3. begin
  4. with DataModule1.cdsproductos do
  5.  
  6. begin
  7. Open;
  8. ApplyUpdates(0);
  9. end;
  10. end;

Ir al mensaje completo


  • Por favor identifícate para responder
3 respuestas en este tema

#1 giulichajari

giulichajari

    Advanced Member

  • Miembros
  • PipPipPip
  • 468 mensajes

Escrito 28 junio 2020 - 02:50

Tengo un campo precio en un TClientDataSet que viene de la base de datos pero es calculado, es decir esta guardado, pero si o si respeta una formula de acuerdo a costo de flete e impuestos.

La formula funciona bien matematicamente y la tengo en el evento afterpost:


delphi
  1. procedure TDataModule1.cdsproductosAfterPost(DataSet: TDataSet);
  2. begin
  3. with DataModule1 do
  4. begin
  5. DataModule1.cdsproductos.Open;
  6.  
  7. DataModule1.cdsproductos.Edit;
  8. cdsproductosprecioactual.AsFloat:=cdsproductosCosto.AsFloat*
  9. (cdsproductosGanancia.AsFloat/100)+
  10. cdsproductosCosto.AsFloat+cdsproductosRedondeo.AsFloat + (cdsproductosCosto.AsFloat *
  11. (cdsproductosImpuesto.AsFloat/100))+cdsproductosFlete.AsFloat;
  12.  
  13.  
  14. end;
  15. end;

Entonces que debo colocar en el evento onchange del dbedit de costo,ganancia,etc(de cada dbedit de cada campo asociado a la formula) para que actualize el clientdataset y el dbedit de precio al toque?

 

Pense usar:


delphi
  1. procedure TFPRODUCTOS.DBEdit5Change(Sender: TObject);
  2. begin
  3. DataModule1.cdsproductos.ApplyUpdates(0);
  4. DataModule1.cdsproductos.Refresh;
  5. end;

Pero como tengo los campos de tipo currency, me dice que no es un valor flotante valido.

 

Y luego al salir de la aplicacion obtengo el error de la segunda imagen.Archivo adjunto  Captura de pantalla (17).png   34,32KB   4 descargas

 

Archivos adjuntos


  • 0

#2 giulichajari

giulichajari

    Advanced Member

  • Miembros
  • PipPipPip
  • 468 mensajes

Escrito 28 junio 2020 - 03:51   Mejor respuesta

Bueno se soluciono usando el evento KeyUp de los DBEdit


delphi
  1. procedure TFPRODUCTOS.DBEdit6KeyUp(Sender: TObject; var Key: Word;
  2. Shift: TShiftState);
  3. begin
  4. with DataModule1.cdsproductos do
  5.  
  6. begin
  7. Open;
  8. ApplyUpdates(0);
  9. end;
  10. end;


  • 1

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.125 mensajes
  • LocationMéxico

Escrito 28 junio 2020 - 02:42

Que bien amigo. Lo pongo como resuelto.

 

Saludos


  • 1

#4 giulichajari

giulichajari

    Advanced Member

  • Miembros
  • PipPipPip
  • 468 mensajes

Escrito 01 julio 2020 - 02:12

Que bien amigo. Lo pongo como resuelto.

 

Saludos

Al final tuve el problema de que escribe mal sobre el campo, es decir al marcar 258 escribe 582. Esto ocurre si borro todo,si lo modifico no. Esto ocurre porque al borrar el edit y escribir "2" por ejemplo se guarda el dataset, entonces se pone el cursor delante, a la izquierda.


  • 1