2016-10-20 3 views
0

プロジェクト用のWindowsフォームアプリケーションを作成しています。私のプロジェクトでは、システムのスケジューリングに関するもので、DayとInstructorを含むmsアクセスデータベースからデータを検索しようとしています。 Day列には2つの値 "MWFとTTH"しかありません。 MWFを検索すると、MWFを含むすべてのデータがリストビューに表示されますが、1つのデータだけが表示されます。これをどうすれば解決できますか? while (c.dr.Read())にHEREC#でmsのアクセスデータベースを使用してLike演算子を使用する方法?

public void Search() 
    { 
     c.OpenDb(); 
     c.com.CommandType = CommandType.Text; 
     c.com.CommandText = "SELECT * FROM ScheduleInfo WHERE Day LIKE '%" + comboBox1.Text + "%' AND Instructor LIKE '%" + textBox9.Text + "%' "; 
     c.com.Connection = c.con; 
     c.dr = c.com.ExecuteReader(); 
     if (c.dr.Read()) 
     { 
      ListViewItem fp = new ListViewItem(c.dr["Day"].ToString()); 
      fp.SubItems.Add(c.dr["Time"].ToString()); 
      fp.SubItems.Add(c.dr["Instructor"].ToString()); 
      fp.SubItems.Add(c.dr["Subject"].ToString()); 
      fp.SubItems.Add(c.dr["Room"].ToString()); 
      listView5.Items.Add(fp); 

     } 
     else 
     { 
      Notfound nf = new Notfound(); 
      nf.ShowDialog(); 
      if (nf.DialogResult == DialogResult.OK) 
      { 
       textBox9.Clear(); 
      } 
     } 
     c.CloseDb(); 
    } 

    private void button13_Click(object sender, EventArgs e) 
    { 
     Search(); 
    } 
+2

小さなボビーテーブルを忘れないでください。 http://bobby-tables.com/ –

+1

while(c.dr.read())やこれに類似したループを試しましたか? – leetibbett

+0

アクセス。震える。 –

答えて

2

変更if (c.dr.Read())

CODE:

bool hasRecords = false; 

    while (c.dr.Read()) { 
     ListViewItem fp = new ListViewItem(c.dr["Day"].ToString()); 

     fp.SubItems.Add(c.dr["Time"].ToString()); 
     fp.SubItems.Add(c.dr["Instructor"].ToString()); 
     fp.SubItems.Add(c.dr["Subject"].ToString()); 
     fp.SubItems.Add(c.dr["Room"].ToString()); 
     listView5.Items.Add(fp); 

     hasRecords = true; 
    } 

    if (!hasRecords) { 
    Notfound nf = new Notfound(); 

    nf.ShowDialog(); 

    if (nf.DialogResult == DialogResult.OK) 
     textBox9.Clear(); 
    } 
関連する問題