[delphi] Calculated fields direct laten uitrekenen

Pagina: 1
Acties:

  • Boss
  • Registratie: September 1999
  • Laatst online: 10:17

Boss

+1 Overgewaardeerd

Topicstarter
Ik ben een applicatie aan het maken in Delphi7. Ik maak gebruik van Access als database, via een ado connectie. De volgorde van mijn data-objecten is dus:
- adoConnection
- adoDataset
- DataSetProvider
- ClientDataSet
- DataSource

In de ClientDataSet heb ik een aantal berekende velden gemaakt. Omdat het resultaat van die berekening opgeteld moet worden, zijn het InternalCalc velden.

Nu staan deze velden op mijn formulier in een grid. De niet berekende velden zijn bij het openen van het form meteen zichtbaar. De berekende velden worden echter pas uitgerekend nadat ik iets wijzig in een record.
Wil ik nu dus mijn totaal kloppend krijgen, dan moet ik ieder record in die grid even bewerken, voordat de berekening wordt uitgevoerd en het totaal wordt bijgewerkt.

Wat doe ik verkeerd? Ik zou het graag zo hebben dat de velden meteen bij het openen allemaal al de juiste waarde laten zien...

(ik dacht even dat de InternalCalc velden misschien ook in de database opgeslagen moesten worden en heb die velden dus aangemaakt. Dat leek me al onlogisch en werkte dus niet).

Als er nog meer info nodig is om mij in de juiste richting te kunnen wijzen dan hoor ik dat graag!

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 16:17

Reptile209

- gers -

Misschien een beetje quick-and-dirty, maar probeer bij het creeren van je form (nadat de dataset geopend is) eens:
Delphi:
1
2
DataSet.Edit;
DataSet.Cancel;

Dan wordt de State achtereenvolgens op dsEdit en dsBrowse gezet, zodat je calculated fields netjes zouden moeten worden uitgerekend.

Edit:
Heb je de property AutoCalcFields in je dataset op True staan? Zie ook TDataSet.OnCalcFields in de help.

[ Voor 17% gewijzigd door Reptile209 op 24-07-2003 11:34 ]

Zo scherp als een voetbal!


  • Boss
  • Registratie: September 1999
  • Laatst online: 10:17

Boss

+1 Overgewaardeerd

Topicstarter
Ik heb nu zelfs
Delphi:
1
2
3
4
5
6
7
8
9
10
11
procedure TDataModule1.cdsAfterOpen(DataSet: TDataSet);
begin
  cds.Last;
  while not cds.Eof do
    begin
      cdsCalcFields(DataSet);
      cds.Edit;
      cds.Post;
      cds.Prior;
    end;
end;


Maar 't werkt niet...

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Heb je Reptile209's edit wel gelezen en gedaan?
Reptile209 schreef op 24 juli 2003 @ 11:30:
Edit:
Heb je de property AutoCalcFields in je dataset op True staan? Zie ook TDataSet.OnCalcFields in de help.

We adore chaos because we like to restore order - M.C. Escher