Click here to Skip to main content
15,888,610 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi I am having problem with
my code:

VB
For Each rw As DataGridViewRow In DataGridView1.Rows
            Dim SRT1 As Integer = DataGridView1.Rows.Count \ 6
            For i As Integer = 0 To rw.Cells.Count - 1
                If rw.Cells(i).ColumnIndex = 3 Then
                    SSQ1 += 1
                    rw.Cells(i).Value = SSQ1.ToString
                    If rw.Cells(i).Value = SRT1.ToString Then
                        SSQ1 = 0
                        rw.Cells(i).Value = SSQ1.ToString + 1
                    End If
                End If
            Next
        Next


SRT 1value is (476 \ 6) = 79
but the problem begun with this column3 in my dgv, it seems that it only works just fine but when it reaches 78 it stops and start in 1 then the next row has also the value of 1

The result that I wanted, since my value is 79, I wanted to start with 1 and ends in 79 then continue the cycle until it reach the last row of my dgv.
Can you tell me what's wrong in my code? thanks in advance.


Result that I wanted:

column2 | column3
1_______| 1
2_______| 2
3_______| 3
..._______| ...
77______| 77
78______| 78
79______| 79
80______| 1
81______| 2
82______| 3
83______| ...

What I have tried:

The posted code was the final thing that I've tried so far.
Posted
Updated 4-Oct-22 0:39am
v2

Compiling does not mean your code is right! :laugh:
Think of the development process as writing an email: compiling successfully means that you wrote the email in the right language - English, rather than German for example - not that the email contained the message you wanted to send.

So now you enter the second stage of development (in reality it's the fourth or fifth, but you'll come to the earlier stages later): Testing and Debugging.

Start by looking at what it does do, and how that differs from what you wanted. This is important, because it give you information as to why it's doing it. For example, if a program is intended to let the user enter a number and it doubles it and prints the answer, then if the input / output was like this:
Input   Expected output    Actual output
  1            2                 1
  2            4                 4
  3            6                 9
  4            8                16
Then it's fairly obvious that the problem is with the bit which doubles it - it's not adding itself to itself, or multiplying it by 2, it's multiplying it by itself and returning the square of the input.
So with that, you can look at the code and it's obvious that it's somewhere here:
VB
Private Function Double(ByVal value As Integer) As Integer
    Return value * value
End Function

Once you have an idea what might be going wrong, start using the debugger to find out why. Put a breakpoint on the first line of the method, and run your app. When it reaches the breakpoint, the debugger will stop, and hand control over to you. You can now run your code line-by-line (called "single stepping") and look at (or even change) variable contents as necessary (heck, you can even change the code and try again if you need to).
Think about what each line in the code should do before you execute it, and compare that to what it actually did when you use the "Step over" button to execute each line in turn. Did it do what you expect? If so, move on to the next line.
If not, why not? How does it differ?
Hopefully, that should help you locate which part of that code has a problem, and what the problem is.
This is a skill, and it's one which is well worth developing as it helps you in the real world as well as in development. And like all skills, it only improves by use!
 
Share this answer
 
Comments
razrx 4-Oct-22 22:31pm    
I like the way how you explain this stuff and this helps me to expound details on what's going on with my code, thanks a lot :)

I like this part "Compiling does not mean your code is right!"
OriginalGriff 5-Oct-22 0:55am    
Thank you!
You'd be surprised how many times we get told "There is nothing wrong with my code because the compiler says it's fine" :sigh:
You can simplify that code considerably:
VB
Dim SSQ1 As Integer = 0
Dim SRT1 As Integer = DataGridView1.Rows.Count \ 6
For Each rw As DataGridViewRow In DataGridView1.Rows
    SSQ1 += 1
    rw.Cells(3).Value = SSQ1.ToString
    If SSQ1 = SRT1
        SSQ1 = 0
    End If
Next

And that set works.
 
Share this answer
 
Comments
razrx 4-Oct-22 21:51pm    
Your code is much simple to understand than the way I did, like this:

Dim SRT1 As Integer = Dgv1.Rows.Count / 6
For Each rw As DataGridViewRow In Dgv1.Rows
For i As Integer = 0 To rw.Cells.Count - 1
If rw.Cells(i).ColumnIndex = 3 Then
SSQ1 += 1
rw.Cells(i).Value = SSQ1.ToString
If rw.Cells(i).Value = SRT1 + 1 Then
SSQ1 = 1
rw.Cells(i).Value = SSQ1.ToString
End If
End If
Next
Next

it also works but thank you for answering my question
Richard MacCutchan 5-Oct-22 3:37am    
Why are you looping through all thre columns when you know that column 3 is the one that needs to be edited? The code I provided above is far more efficient.
razrx 5-Oct-22 23:05pm    
Oh! now that you mention it, I also notice this silly mistake. hahaha, thank you for pointing it out.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900