-
Feb 4th, 2018, 05:42 PM
#1
Thread Starter
Member
[RESOLVED] getting an average in a datagridview
Hi all
Below I have code to sum up a list of numbers in a specific column in my datagridview,but is there a way I can take the first five numbers of the column and find the average figure,and then place that average figure into a text box on my form.
Code:
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
Dim sum As Double = 0
Dim i As Single
For i = 0 To DataGridView1.RowCount - 1
sum +=
DataGridView1.Rows(i).Cells("examfigs").Value()
Next
TextBox1.Text = sum
End Sub
kind regards
al
-
Feb 4th, 2018, 06:09 PM
#2
Re: getting an average in a datagridview
I don't think that you have really thought this through. You have a loop that goes from 0 to the index of the last row in the grid. If you only want to use five rows then does it not make sense to change the upper limit of the lop to the index of the fifth row in the grid, i.e. 4?
-
Feb 4th, 2018, 06:22 PM
#3
Thread Starter
Member
Re: getting an average in a datagridview
Hi,
Thanks for your reply.I see what you mean but what code would I use to actually average the numbers up.
Kind regards
al
-
Feb 4th, 2018, 06:27 PM
#4
Re: getting an average in a datagridview
Again, think it through. We all learned how to calculate an average in school. You simply add the values together and divide by the number of values. You're already doing the first part.
-
Feb 5th, 2018, 05:03 AM
#5
Thread Starter
Member
Re: getting an average in a datagridview
-
Feb 5th, 2018, 05:11 AM
#6
Re: getting an average in a datagridview
If 'i' is being used to store Integer values then why is it declared as type Single?
You were starting your loop counter at 0 before and you have now changed it to 1. Why is that? Do you want to start at the second row?
There's no point setting the Text of the TextBox to 'sum' if what you actually want it set to is 'sum/5' and that's what you actually set it to immediately afterwards. If you want a wall painted blue, would you paint it red first and then immediately paint it blue over the top?
-
Feb 5th, 2018, 05:59 AM
#7
Thread Starter
Member
Re: [RESOLVED] getting an average in a datagridview
Hi Jm,
Thanks for the reply.Starting the loop at zero only took the first 4 numbers in,1 to 5 took the five numbers in.Good point about setting the sum.I never thought of that.Do you mean like this?
Code:
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
Dim sum As Double = 0
Dim i As Single
For i = 1 to 5
sum +=
DataGridView1.Rows(i).Cells("examfigs").Value()
Next
TextBox1.Text = sum/5
End Sub
What would you set the i int to, perhaps a double.?
Kind Regards
albert
-
Feb 5th, 2018, 06:31 AM
#8
Addicted Member
Re: [RESOLVED] getting an average in a datagridview
If you look at the DataGridView1.RowCount value you will note it is an integer. You would use an integer to iterate through collections/arrays like this and which all are zero index based i.e. the first index position starts at 0. In your case the first row will be 0.
You can include the count variable in the construction of the for/loop like this,
Code:
For i as integer = 0 to 4 ' process the first 5 rows
sum += DataGridView1.Rows(i).Cells("examfigs").Value() ' Do something with each row
Next
-
Feb 5th, 2018, 06:58 AM
#9
Re: [RESOLVED] getting an average in a datagridview
Hi,
if you use a Datatable, you can use this...
I want to get the avg. Frachtkosten from my Datatable loaded to my Datagridview
the Function..
Code:
Public Function Mittelwert(ByVal TB As DataTable) As Single
Dim SumVal As Single = 0
For Each Rw As DataRow In TB.Rows
SumVal += Convert.ToSingle(Rw("Frachtkosten"))
Next
Return SumVal / TB.Rows.Count
End Function
then to call it...
Code:
MsgBox(Mittelwert(objDataTable))
regards
Chris
to hunt a species to extinction is not logical !
since 2010 the number of Tigers are rising again in 2016 - 3900 were counted. with Baby Callas it's 3901, my wife and I had 2-3 months the privilege of raising a Baby Tiger.
-
Feb 5th, 2018, 04:32 PM
#10
Re: [RESOLVED] getting an average in a datagridview
Originally Posted by ChrisE
Hi,
if you use a Datatable, you can use this...
I want to get the avg. Frachtkosten from my Datatable loaded to my Datagridview
the Function..
Code:
Public Function Mittelwert(ByVal TB As DataTable) As Single
Dim SumVal As Single = 0
For Each Rw As DataRow In TB.Rows
SumVal += Convert.ToSingle(Rw("Frachtkosten"))
Next
Return SumVal / TB.Rows.Count
End Function
then to call it...
Code:
MsgBox(Mittelwert(objDataTable))
regards
Chris
I would opt for this method, however I would build a condition to remove NULL values from the AVG. I am not sure what the default behavior is when getting average via aggregate avg function from sql or datacolumn expression, but I am thinking NULLS are not included in the results. I could be wrong
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|