Member 13998781 Ответов: 1

Как сделать цикл для вычисления значений ячеек в datagridview?


Привет...

Как умножить значение строки столбца на все значения в другом столбце и сделать цикл для всех строк.Затем, в конце, суммируйте значения в каждой строке?

Цикл работает только для 1-х двух строк в столбце 3..!!? Я не могу этого понять! Большое спасибо за вашу помощь!

Вот вам пример.
Пожалуйста, обратите внимание, что мне не нужно иметь или показывать эти три колонки (I, II, III). Я просто положил их туда, чтобы показать шаги. В столбце 2 может быть много строк...




Column 1	Column 2	I	II	III	   Column 3 (I+II+III)
  40	           1    40			      40
  30	           2	30	80		      110
  20	           5	20	60	200	      280
  10		            10  40	150	      200
   5		            5	20	100	      125
		                    10   50	      60
		       	                 25	      25


Что я уже пробовал:

Dim i As Integer
For k As Integer = 0 To Data1.ColumnCount - 4

For j = 0 to Data1.Rows.Count - 2

Data1.Rows(j).Cells(2).Value = Data1.Rows(j).Cells(0).Value * _
Data1.Rows(j).Cells(1).Value 


For i = 0 To EOF()

i = i + 1

Data1.Rows(j).Cells(3).Value = Data1.Rows(j).Cells(0).Value *_ 
Data1.Rows(k+i).Cells(1).Value + Data1.Rows(j).Cells(2).Value

Next i 
Next j
Next k

Alek Massey

Используйте отладчик для пошагового просмотра кода.

Member 13998781

Спасибо за комментарий. Я действительно пытался, но не мог понять, почему?! любая помощь или совет будут оценены по достоинству! спасибо.

1 Ответов

Рейтинг:
2

CHill60

Видишь эту линию

For k As Integer = 0 To Data1.ColumnCount - 4
Вы игнорируете последние 3 столбца. Эта строка, вероятно, должна гласить:
For k As Integer = 0 To Data1.ColumnCount - 1
Или вы могли бы использовать For Each чтобы избежать этой проблемы.
Также посмотрите на линию
For j = 0 to Data1.Rows.Count - 2
Вы игнорируете последний ряд. Эта строка, вероятно, должна гласить:
For j = 0 to Data1.Rows.Count - 1
Теперь взгляните на свою внутреннюю петлю
For i = 0 To EOF()

i = i + 1
Вы находитесь увеличения счетчика i в For петля, поэтому в первый раз через эту петлю i = 1 (а не 0). Второй раз через петлю i = 3 не 1, третий раз 5 Не 2 и так далее. Я действительно не могу понять, почему у вас есть три петли для обхода двумерного объекта, и я понятия не имею, что делает функция EOF ().

Вы также должны понимать, что каждый столбец в сетке имеет одинаковое количество "строк" - сетки имеют строки (и столбцы), столбцы-нет.

Вы уже пробовали отладку, но не заметили этих проблем, так что, надеюсь, эта статья - Освоение отладки в Visual Studio 2010 - руководство для начинающих[^] - поможет вам стать более опытным