Subject |
Re: how to calculate 2 records of the same column of a grid? |
From |
Gaetano <gaetanodd@hotmail.com> |
Date |
Wed, 13 Jan 2021 10:57:02 +1000 |
Newsgroups |
dbase.getting-started |
Try this:
1. ensure that there is an active index for the rowset on the unique row
identifier. Since it is energy consumption, I assume you have a
timestamp or date to identify your records.
2. set the multiselect property of the grid to true
3. define an onLeftMouseUp event for your grid and put the following
code in it (replace the field name as needed):
a=this.selected()
if a.size>1 // to avoid triggering the code for any click on the grid
nSum=0 // initialise the counter to allow '+=' accumulation
//deqactivate grid update while the code scrolls through the records
this.parent.rowset.notifyControls := false
for i=1 to a.size
this.parent.rowset.goto(a[i])
nSum+=this.parent.rowset.fields[<eConsumedFieldName>].value
endfor
msgbox("egen.sum= "+nSum)
//reactivate grid update
this.parent.rowset.notifyControls := true
endif
4. click on the first row that you want to include in the selection,
hold the shift key and click on the last row you want to include in the
selection (you can click on the grid's scroll bars as it won't change
the selection of the first row and won't trigger the code either)
5. the msgbox will show the accumulated values for the selected range
upon releasing the left button of the mouse and provided you selected
more than one record.
This assumes the selection is always contiguous. For random selections,
you can still use this code but you need to attach it to a pushbutton
instead of to the onLeftMouseUp so that you won't need the if a.size>1
check to avoid getting the value updated with every ctrl+click on the
grid to select random records.
Attaching the code to a pushbutton may also help prevent accidental
triggering of the code while scrolling and selecting an unwanted record.
Hope this helps,
Gaetano.
On 13/01/2021 6:00, Dirk wrote:
> Goodday,
> i am trying to calculate 2 records of the same column as excel, make a
> sum in a calculated fields, by clicking on the grid cell
>
> means want to know the consume of solar electricty in a certain period
>
> i can of course use 2 colums , 2 fields : 1 begin and 1 end
>
> but begin of column 1 day x, should be end of column end day - 15
>
> day is date field i put the info into
>
> so, to avoid a column i trying to find out a way as excel
>
> thanks for a helping hand
>
> best regards
>
> Dirk
|
|