Jump to content


Photo

Como actualizar TClientDataSet al cambiar DBEdit


Best Answer giulichajari , 28 June 2020 - 03:51 AM

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;

Go to the full post


  • Please log in to reply
3 replies to this topic

#1 giulichajari

giulichajari

    Advanced Member

  • Miembros
  • PipPipPip
  • 477 posts

Posted 28 June 2020 - 02:50 AM

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.Attached File  Captura de pantalla (17).png   34.32KB   4 downloads

 

Attached Files


  • 0

#2 giulichajari

giulichajari

    Advanced Member

  • Miembros
  • PipPipPip
  • 477 posts

Posted 28 June 2020 - 03:51 AM   Best Answer

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
  • 14448 posts
  • LocationMéxico

Posted 28 June 2020 - 02:42 PM

Que bien amigo. Lo pongo como resuelto.

 

Saludos


  • 1

#4 giulichajari

giulichajari

    Advanced Member

  • Miembros
  • PipPipPip
  • 477 posts

Posted 01 July 2020 - 02:12 AM

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




IP.Board spam blocked by CleanTalk.