2012-05-06 13 views
0

私はこれらのコードをデータベースの特定の行の合計を計算し、その意図の列の下の新しい行に表示します。しかし、私はエラーが発生します。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); 

私は新しい行の合計をどのように見ることができますか?

+0

例外が表示される箇所 –

+1

データセットを使用するのではなく、ここでLINQ to SQLを使用することを検討する必要があります。コンパイル時のサポートでより自然なクエリを書くことができます。 –

+0

質問はどうすれば新しい行に合計を表示できますか? – aliprogrammer

答えて

0

は、私は正確にこのエラーが発生した場所:)あなたは、デバッガを使用して参照することをお勧め

+0

どうすれば合計を表示するための行ができますか? – aliprogrammer

2

「dsを」あなたは「オブジェクト参照がインスタンスに設定されていません取得する理由です、「エントリ」テーブルを持っていませんオブジェクトのエラーです。

+0

どのように合計を表示するための行を持つことができますか? – aliprogrammer

+0

+1:DGVから直接データを抽出することはお勧めしません。データテーブルを使用します。 – dwerner

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]の[「手数料」]はいないことを確認します同様のDataTableからまたはグリッド からループのいずれかのアクセス値をチェックしますがnull値を含む Computeメソッドを使用しても合計を実行できます。

+0

質問はどうすれば新しい行に合計を表示できますか? – aliprogrammer

+0

Re新しい行を追加した後、グリッドにDSをバインドします。新しい行を追加するためにあなたがやっていることはうまくいくようです。私はあなたが行に値を割り当てて、それを追加することを願っています。 – Deepesh

1

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

3

私はエラーがループ文であると思う:

の代わりに:あなたはあなたがを差し引く必要がありますIndex zeroから開始されている

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

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

これを使用します行の合計数を指定します。そのような行が存在しないので

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

:それは上に達したとき、それはObject reference not set to an instance of an objectを返します。ループの後

UPDATE 1

、この文を挿入します。

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

UPDATE 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); 
+0

は合計を計算します。問題は、どのように新しい列の合計をFee列に表示するかです。 – aliprogrammer

+0

新しい行の合計はどこに置かれますか? –

+0

フィーの列 – aliprogrammer

0

DBは1のためにnullを返した場合それはまた起こることができます"FEE"セル。 これを実行して、どこに値があるかを見てください。ヌルが表示されている場合は、!= nullの場合に必要です。