0

これらの次のコードを使用して、データベース内の特定の行の合計を計算し、その意図列の下の新しい行に表示します。しかし、私はエラーが発生します。

オブジェクト参照がオブジェクト インスタンスに設定されていません

これを解決するのを手伝ってください。

前もって感謝します。

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);

新しい行で合計を確認する方法を知りたいです。

4

6 に答える 6

3

エラーはループステートメントにあると思います:

それ以外の:

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いるので、行の総数から1 を差し引く必要があります。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);
于 2012-05-07T06:08:48.690 に答える
2

「ds」にはテーブル「エントリ」がありません。そのため、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが発生します。

于 2012-05-06T20:24:31.410 に答える
1

datatableでcomputeメソッドを使用できます。計算メソッドから結果を取得し、データテーブルから新しい行を作成してから、適切なフィールドに割り当てます。次に、新しい行をdatatableに追加します。

于 2012-05-07T06:04:57.953 に答える
1

あなたの質問はあまり明確ではありませんが、ループをチェックして、データテーブルまたはグリッドから値にアクセスしてください

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"] に null 値が含まれていないことも確認してください。Compute メソッドを使用して合計を計算することもできます。

于 2012-05-07T05:57:34.383 に答える
0

デバッガーを使用して、このエラーが発生する正確な場所を確認することをお勧めします:)

于 2012-05-06T20:23:52.200 に答える
0

DB が 1 つの「FEE」セルに対して null を返す場合にも発生する可能性があります。それを実行して、正確にどこにいるかを確認し、値を見てください。null が表示される場合は、if != null が必要です。

于 2012-05-07T06:51:29.570 に答える