2017-10-11 7 views
-1

データベース(MS Access)からデータを表示すると、選択したデータの最後に別のフォームが表示されます。私はループを使用して試しましたC#を使用してデータベースの次のデータを表示する方法は?

private void btnNext_Click(object sender, EventArgs e) //**This will select the next row** 
{ 
    currentRow++; 
    nextRow(); 
} 

private void nextRow() 
{ 
    if (currentRow <= n) 
    { //**Randomize the RadioButtons.Text** 
     var row = dTable.Rows[currentRow]; 
     List<string> list = new List<string> { row["C1"].ToString(), row["C2"].ToString(), row["C3"].ToString(), row["C4"].ToString() }; 
     lblQuest.Text = row["QUESTION"].ToString(); 
     btn1.Text = row["C1"].ToString(); 
     btn2.Text = row["C2"].ToString(); 
     btn3.Text = row["C3"].ToString(); 
     btn4.Text = row["C4"].ToString(); 
     var ans = row["ANSWER"].ToString(); 
     var rbtn = new[] { btn1, btn2, btn3, btn4 }; 
     var rnd = new Random(); 
     var shuffTxt = list.OrderBy(x => rnd.Next(list.Count)).ToList(); 
     for (int i = 0; i < rbtn.Length; i++) 
     { 
      rbtn[i].Text = shuffTxt[i]; 
     } 
    } 
    if (currentRow > n) 
    { //**If the currentRow is already greater than the n selected rows, it will display a form** 
     frmPIPE frm = new frmPIPE(); 
     frm.Show(); 
     Hide(); 
    } 
} 

しかし、currentRow > n;これは、エラーを表示し

これは0ベースのインデックスを行うのであれば、私は思ったんだけど

+0

これは、 'frmPIPE frm = new frmPIPE();'という行を意味します。この行はそのエラーを発生させますか? ;)。 –

+0

そのコードはありません。 currentRowが行数より大きい場合、エラーが発生します。 –

+0

at var row = dTable.Rows [currentRow]; –

答えて

1

「そこには位置の行nがありません」、とあなたはにあなたのコードを変更する必要があります。

if (currentRow < n) 
... 
else if (currentRow >= n) 
+0

これは私の問題を解決します。ありがとう。しかし、なぜ> =条件が働くのは私はそれをより大きくする必要があるのですか?これは私を困惑させた。 –

+0

あなたのコード全体に精通していませんが、0ベースのインデックス作成では、ポジション/インデックス2の値を求めるならば、並べ替え[23,34,45] 45を得て、ポジション/インデックス3の値を尋ねると、投稿したものに似たエラーメッセージが表示されます。だから0ベースです。つまり、position/index 0の値を求めると、23(最初の値)が得られます。同様に、50行の結果セット/テーブルがある場合、それらは0-49としてインデックス付けされるため、インデックス50の行を要求すると例外がスローされます。 –

+0

私はまた、2番目のステートメントの 'if'の代わりに' else if'と言うように自分のコードを修正しました。これは、2つの条件が互いに排他的であるため、最初の条件が真であれば2番目の条件がチェックされず、このコードには影響しないことを意味します。 –

関連する問題