Математические действия в таблице c#

baimkin

Client
Регистрация
04.08.2015
Сообщения
283
Благодарностей
111
Баллы
43
Нужно проводить различные математические действия между ячейками в таблице, пробую сделать снипет для вычисления разницы между ячейками одного столбца и записи результата в третий столбец, но чет не хочет работать, код ниже:
Код:
// получаем таблицу, в которой будем работать
var sourceTable = project.Tables["Таблица 1"];
// ищем в каждой строчке в таблице
lock(SyncObjects.TableSyncer)
{
    for(int i=0; i < sourceTable.RowCount; i++)
    {
        // сложить 1ю и 2ю ячеку второго столбца
        var p1 = sourceTable.GetCell(i,1);
        var p2 = sourceTable.GetCell(i+1,1);
        var rez = p1 + p2;
        // кладем результат в 1ю ячейку 3го столбца
        sourceTable.Rows[i].Cells[2].Value = rez;
       
        }
}
// если ничего не нашли возвращаем "no"
return "ок";
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 241
Благодарностей
5 848
Баллы
113
Какая ошибка выдается?
 

baimkin

Client
Регистрация
04.08.2015
Сообщения
283
Благодарностей
111
Баллы
43
просто не выполняется код вообще, когда удаляю строку
Код:
sourceTable.Rows[i].Cells[2].Value = rez;
, то код выполняется, еще пробовал такой вариант кода
Код:
// получаем таблицу, в которой будем работать
var sourceTable = project.Tables["Таблица 1"];
// ищем в каждой строчке в таблице
lock(SyncObjects.TableSyncer)
{
    for(int i=0; i < sourceTable.RowCount; i++)
    {
        // сложить 1ю и 2ю ячеку второго столбца
        var p1 = sourceTable.GetCell(i,1);
        var p2 = sourceTable.GetCell(i+1,1);
        var rez = p1 + p2;
        return = rez;
      
        }
}
но почему то в таком варианте выдавался такой результат 28.07.201615:19:175
содержание самой таблицы вот http://prntscr.com/c152mo
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 241
Благодарностей
5 848
Баллы
113
В классе IZenniTabke нет членов Rows и Cells. Это вы вероятно взяли из C#.
В логе должно выдаваться сообщение
PM_code_error.png
 

baimkin

Client
Регистрация
04.08.2015
Сообщения
283
Благодарностей
111
Баллы
43
подскажите как правильно записать нужное значение в заданную ячейку таблицы?
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 241
Благодарностей
5 848
Баллы
113

baimkin

Client
Регистрация
04.08.2015
Сообщения
283
Благодарностей
111
Баллы
43
спасибо, буду теперь еще с математикой в c# разбираться, чтобы он на 1+2 давал результат 3, а не 12
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
891
Баллы
113
для этого надо сначала преобразовать значения в числа через int.Parse или float.Parse в таблице все значения лежат как строки ( ну по крайней мере так было раньше)
 
  • Спасибо
Реакции: baimkin

baimkin

Client
Регистрация
04.08.2015
Сообщения
283
Благодарностей
111
Баллы
43
да, спасибо, так и сделал, вот решение может кому пригодится:
Код:
// получаем таблицу, в которой будем работать
var sourceTable = project.Tables["История"];
// ищем в каждой строчке в таблице
lock(SyncObjects.TableSyncer)
{
    for(int i=0; i < sourceTable.RowCount; i++)
    {
        // сложить 1ю и 2ю ячеку второго столбца
        int a = Convert.ToInt32(sourceTable.GetCell("C",i));
        int b = Convert.ToInt32(sourceTable.GetCell("C",i+1));
       
          // кладем результат в 1ю ячейку 3го столбца
var rez = b - a;
sourceTable.SetCell("G", i, rez.ToString());
    }

}
но единственное код выходит с ошибкой по красной линии т.к пытается в конце взять ячейку несуществующую, это я убрать так и не смог
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)