2016-09-26 43 views
-2

解決方法を教えてください。データが存在しますが、プログラムに「行/列のデータがありません」と表示されます

if (Convert.ToInt32(rd["B_Quan"].ToString()) > 3) 
    { 
     MessageBox.Show("Oops sobra tama na "); 
    } 
    cn.Close(); 
+0

エラーは何ですか? –

+1

[良い質問をする方法] – 3615

+4

あなたは何が起こっているのか、何が起こっているのか、何が起きているのか、あなたがこれまでに行ってきた診断や診断があります。 https://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/ –

答えて

0

行/列のいずれかが存在しないか、nullが含まれています。あなたがNullReferenceExceptionを受け取ることになります。その場合には nullは、関数に.ToString()

を持っていないので、あなたはこれをチェックできます。

if (rd.Table.Columns.Contains("B_Quan") && rd["B_Quan"] != null) 
{ 
    if (Convert.ToInt32(rd["B_Quan"].ToString()) > 3) 
    { 
     MessageBox.Show("Oops sobra tama na "); 
    } 
} 
cn.Close(); 

これは何をしますか?

using (DataTable dt = new DataTable()) 
{ 
    dt.Load(rd); 
    Console.WriteLine(dt.Rows.Count); 
} 
if (Convert.ToInt32(rd["B_Quan"].ToString()) > 3) 
{ 
    MessageBox.Show("Oops sobra tama na "); 
} 

デバッグ中にdtを開き、テーブルを表示できますか? "B_Quan"という名前の列を持っていればいいですか?

+0

'rd ['B_Quan']'がnullを返すことを保証しているので、 'SqlDataReader.Read()'が実行されるまでではない –

+1

Leonelが編集履歴があることを指摘するまで、あなたのコードに 'SqlDataReader'はありませんでした。あなたはしました。あなたはそれを試しましたか?もしそれがヌルになることを保証すれば、 '&& rd [" B_Quan "]!= null'はそれを捕まえるでしょう。 – DerpyNerd

+0

'SqlDataReader.Read()'を実行しないと、 'rd [" B_Quan "]'はデータを取得しないため、無意味です。データがあってもカラム内のデータを取ることができないからですその中に...私はそれを試してみたいです。 –

0

質問でコードを削除する理由がわかりません。

この質問のために、私はあなたのコードを編集履歴からコピーしました。

「データが存在しません」がコードに含まれている理由は、まだSqlDataReader.Read()を使用していないためです。詳細は、SqlDataReader Classを参照してください。

サンプル:

while(rd.Read()) // You need to read first to get your data. 
    { 
     if (Convert.ToInt32(rd["B_Quan"].ToString()) > 3) 
     { 
      MessageBox.Show("Oops sobra tama na "); 
     } 
    } 

次のコード:

private void button3_Click(object sender, EventArgs e) 
{ 
    if (cn.State == ConnectionState.Closed) 
    { 
     cn.Open(); 
    } 
    string student = "Select * From tbl_student"; 

    OleDbCommand loadstudent = new OleDbCommand(student, cn); 
    loadstudent.Parameters.AddWithValue("@SId", textBox8.Text + "%"); 

    rd = loadstudent.ExecuteReader(); 

    if (rd.HasRows == true) 
    { 
     // ipapalabas ung labas 
     while (rd.Read()) 
     { 

     messageBox.Show("Oops sobra tama na "); 

     } 
    } 
    else 
    { 
     MessageBox.Show("No record(s) found."); 
    } 
    cn.Close(); 

    if (cn.State == ConnectionState.Closed) 
    { 
     cn.Open(); 
    } 
    string s = "Select * From Borrow"; 

    OleDbCommand sa = new OleDbCommand(s, cn); 
    loadstudent.Parameters.AddWithValue("@SId", textBox8.Text + "%"); 

    rd = sa.ExecuteReader(); 

    while(rd.Read()) // You need to read first to get your data. 
    { 
     if (Convert.ToInt32(rd["B_Quan"].ToString()) > 3) 
     { 
      MessageBox.Show("Oops sobra tama na "); 
     } 
    } 
    cn.Close(); 

    if (cn.State == ConnectionState.Closed) cn.Open(); 

    cmd = new OleDbCommand("Select * From Borrow", cn); 
    rd = cmd.ExecuteReader();// ipapalitaw 
    if (rd.HasRows == true) 
    { 
     // ipapalabas ung labas 
     while (rd.Read()) 
     { 
      if (Convert.ToInt32(rd["B_Quan"].ToString()) > 3) 

      { 
       MessageBox.Show("Oops sobra tama na "); 
       return; 

      } 
     } 
    } 
} 
+0

申し訳ありません。あなたの助けてくれてありがとう@LeonelSarmiento – Bajongjong

関連する問題