繁体   English   中英

C#中列值的总和

[英]Sum of column values in C#

我使用以下这些代码来计算数据库中特定行的总和,并将其显示在该意图列下的新行中。 但是我会遇到一个错误。

你调用的对象是空的

请帮我解决这个问题。

提前致谢。

int sum = 0;

for (int i = 0; i < dt.Rows.Count; i++)
{
    sum += int.Parse(dataGridView1.Rows[i].Cells["Fee"].Value.ToString());
}

DataSet ds = new DataSet();
adapter.Fill(ds);
DataRow row = ds.Tables["Entry"].NewRow();
ds.Tables["Entry"].Rows.Add(row);

我想知道如何在新行中看到总和。

我认为错误是在循环语句中:

代替:

for (int i = 0; i < dt.Rows.Count; i++)
{
    sum += int.Parse(dataGridView1.Rows[i].Cells["Fee"].Value.ToString());
}

用这个:

for (int i = 0; i < dt.Rows.Count - 1; i++)
{
    sum += int.Parse(dataGridView1.Rows[i].Cells["Fee"].Value.ToString());
}

您从Index zero开始,因此应该为总行数减去一 当到达时,它将返回Object reference not set to an instance of an object

sum += int.Parse(dataGridView1.Rows[dt.Rows.Count].Cells["Fee"].Value.ToString());

因为这样的行不存在。

更新1

在循环之后,插入以下语句:

dataGridView1.Rows.Add("", "", sum)

更新2

int sum = 0;

for (int i = 0; i < dt.Rows.Count - 1; i++)
{
    sum += int.Parse(dataGridView1.Rows[i].Cells["Fee"].Value.ToString());
}

DataSet ds = new DataSet();
adapter.Fill(ds);

DataRow row = ds.Tables["Entry"].NewRow();
row[0] = "";
row[1] = "";
row[2] = sum;
ds.Tables["Entry"].Rows.Add(row);

“ ds”没有表“ Entry”,这就是为什么您收到“未将对象引用设置为对象实例”的原因。

虽然您的问题不是很清楚,但是请从数据表或网格中检查循环访问值

for (int i = 0; i < dt.Rows.Count; i++)
{
   if (dt.Rows[i]["Fee"].Value !=null)
   sum += int.Parse(dt.Rows[i]["Fee"].Value.ToString());
}

还要确保dt.Rows [i] [“ Fee”]不包含空值。即使您可以使用Compute方法进行总和。

您可以在数据表中使用计算方法。 从计算方法中获取结果,然后从数据表中创建新行,然后分配给适当的字段。 然后将新行添加到数据表中。

我建议您使用调试器,看看确切的错误发生在哪里:)

如果数据库为一个“ FEE”单元返回空值,也会发生这种情况。 运行它,看看您确切在哪里,并查看值,如果看到null,则当!= null时将需要它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM