2011-10-11 6 views
0

私の計画は、文字Mを挿入すると、単語の先頭にある文字Mの全体がリストボックスを使って表示されますが、できません。私はこのコードを使用しますが、それは働いていなかった理由を私は見つけることができません。リストをフィルタリングするC#msアクセス

conn.Open(); 
OleDbCommand cmd2 = new OleDbCommand("SELECT fnID, Lastname, Firstname, Middlename FROM tbl_Fullname WHERE Firstname LIKE '%?'", conn); 
cmd2.Parameters.Add("@Firstname", OleDbType.VarChar).Value = textBox3.Text; 
try 
{ 
    OleDbDataReader dr = cmd2.ExecuteReader(); 
    if (dr.Read()) 
    { 
    textBox1.Text = dr[0].ToString(); //fnID 
    listBox1.Items.Add(dr[1].ToString()); //Lastname 
    textBox3.Text = dr[2].ToString(); //Firstname 
    textBox4.Text = dr[3].ToString(); //Middlename 
    } 
    else 
    { 
    textBox1.Text = ""; 
    textBox2.Text = ""; 
    textBox3.Text = ""; 
    textBox4.Text = ""; 
    //MessageBox.Show("No result"); 
    } 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message); 
} 
conn.Close(); 
+0

あなたの計画の文(最初の行)を読みやすく(そして何らかの意味で)理解できるように改訂することはできますか? – Bhaskar

答えて

0

あなたのクエリが間違っている:

LIKE '%?' 

それはパラメータの後に来る必要があるので、まず%はワイルドカードです

第二に、私はそれがまったくうまくいかないと思っています。実際、私はそうではないと確信しています。つまり、パラメータを引用符で囲んだ文字列に入れることはできません。クエリ

LIKE ? 

とのparam設定のようなものであるために:これは、フィルタリングのための私の新しいコードです

.Value = textBox3.Text + "%" 
0

conn.Open(); 
      OleDbCommand cmd2 = new OleDbCommand("SELECT fnID,Lastname,Firstname,Middlename FROM tbl_Fullname WHERE Firstname LIKE '" + textBox3.Text + "%'", conn); 

      try 
      { 
       OleDbDataReader dr = cmd2.ExecuteReader(); 

       while (dr.Read()) 
       { 
        textBox1.Text = dr[0].ToString(); //fnID 
        textBox2.Text = dr[1].ToString(); 
        listBox1.Items.Add(dr[1].ToString()); //Lastname 
        textBox3.Text = dr[2].ToString(); //Firstname 
        textBox4.Text = dr[3].ToString(); //Middlename 
       } 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
      conn.Close(); 

それがうまく働きました。私はそれにバグがあるかどうかわかりません。