[Delphi] DBgrid realtime waarden ophalen

Pagina: 1
Acties:

  • Tyf
  • Registratie: December 2002
  • Laatst online: 28-11-2025
Ik zit met een lastig probleem. Ik vul een DBgrid op basis van een TClientDataset.
Geen probleem hier. De bedoeling is dan dat em een waarde in een bepaald veld van de dbgrid kan aanpassen. Op moment dat me deze aanpast (keypress bv) moet er een waarde berekend worden met het nieuwe getal.
Mijn probleem is dat als er bv 3 staat en ik tik er een 5 achter de waarde die ik terugkrijg op bij het keypress event niet 35 is maar 3, staat er 35 en ik tik er een 1 voor krijg ik 35 terug en niet 135, ... enz
Is er een manier om de echte actuele waarde realtime op te halen, dus op moment dat men een toets indrukt.
Indien dit echt niet gaat welke andere component zou ik kunnen gebruiken. Ik heb er al tijdje achter zitten zoeken maar vind geen fatsoenlijke oplossing.
Ik ben ook geen delphi specialist dus misschien dat het zelf heel simpel is (hoop het toch :) )

[ Voor 3% gewijzigd door Tyf op 16-03-2005 08:39 ]


  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05-2025

FendtVario

The leader drives Vario!

Hoe lees je de waarde uit, met Field.AsInteger? Waarschijnlijk is je getypte waarde nog niet 'verwerk' op het in het keyPress event. Heb je al naar calculated fields gekeken, zo ja, waarom voldoet dat niet (is niet realtime). Waarom moet het realtime?

[ Voor 58% gewijzigd door FendtVario op 16-03-2005 09:03 ]

www.fendt.com | Nikon D7100 | PS5


  • Tyf
  • Registratie: December 2002
  • Laatst online: 28-11-2025
Ik kweet dat keypress maar 1 waarde geeft.
Ik bedoelde dat ik op het keypress event de data uit mijn DBgrid lees.
Via dit:
Productieaantal := string(DBGrid1.SelectedField.DataSet.FieldValues['Productieaantal']);

Nu die haalt die data waarschijnlijk uit de dataset die op da moment nog niet geupdate is.
Pas als ik met de cursus naar ander veld ga of uit de grid krijg ik de juiste waarde en niet de oude.

Om het probleem nog wat beter te omschrijven. Ik haal dus bepaalde data op uit de databank. Steek deze in een clientdataset en beeld het af.
Dan moet de gebruiker per lijn het productie aantal kunnen verhogen of verlagen, hierna worden alle lijnen de databank weggeschreven (het aantal dat afgebeeld staat is een berekend veld in mijn sql dus rechtreeks naar db schrijven gaat niet).

Ik weet niet goed wat je bedoeld met "calculated fields" is dit dan een berekend veld in je sql? of heeft het iets te maken met het grid?

Realtime:Het product zijn betonbalken. Deze balken worden gegoten en de vorm waarin dit gedaan wordt heeft een max lengte. Dus als de je een balk toevoegt aan een productie fiche (in het dbgrid) wordt er gekeken naar de lengte van deze balk * het aantal dat geproduceerd moet worden. Zolang dat dit + som van andere balken kleiner is dan de vorm waarin het gegoten wordt is alles ok.
Dus als em de productie verhoogt moet deze lengte kleiner blijven. Maak ik bv van 1 een 2 moet direct op dat moment alles opnieuw berekend worden en eventueel een waarschuwing gegeven worden dat de maximale productielengte overschreden wordt.

[ Voor 31% gewijzigd door Tyf op 16-03-2005 09:11 ]


  • Tyf
  • Registratie: December 2002
  • Laatst online: 28-11-2025
Oplossing gevonden:
voor je de waarden uitleest van je dbgrid moet je eerst dit doen bij het onkeyup event bv
ClientDataSet.Edit;
ClientDataSet.Post;