2014-02-22 51 views
0

我有數據庫這樣的:記錄在我的DataGridView中沒有正確過濾。

enter image description here

當我在文本框中與「再也芝電機」關鍵詞搜索公司名稱,結果是這樣的:

enter image description here

但是,當我在「Jaya」關鍵字的文本框中搜索公司名稱時,結果未顯示任何內容。

我很困惑,怎麼可能?因爲第一個關鍵字是「Jaya」,而完整關鍵字是「Jaya Raya Motor」,它應該顯示結果,但現在不是。

我該如何解決這個問題?

下面是代碼:

private void GetData(object sender, EventArgs e) 
     { 
      if (_choice.comboBox1.Text == "English") 
      { 
       if (string.IsNullOrWhiteSpace(textBox1.Text)) 
       { 
        System.Media.SoundPlayer _sound = new System.Media.SoundPlayer(@"C:\Windows\Media\Windows Exclamation.wav"); 
        _sound.Play(); 
        MessageBox.Show("Please enter a character or more!", "Error"); 
       } 

       else 
       { 
        using (OleDbConnection conn = new OleDbConnection(connectionString)) 
        { 
         string query = "SELECT [ProductCode], [Quantity], [Description], [SubTotal], [Total], [IssuedBy], [To], [Times] FROM [TransRecord] WHERE [To] = @To ORDER BY [To]"; 

         conn.Open(); 

         using (OleDbCommand cmd = new OleDbCommand(query, conn)) 
         { 
          cmd.Parameters.Add("@To", System.Data.OleDb.OleDbType.VarChar); 
          cmd.Parameters["@To"].Value = this.textBox1.Text; 

          using (OleDbDataAdapter _adapter = new OleDbDataAdapter(cmd)) 
          { 
           _ds.Clear(); 
           _adapter.Fill(_ds, "TransRecord"); 
           dataGridView1.DataSource = null; 
           dataGridView1.Refresh(); 
          } 

          dataGridView1.DataSource = _ds.Tables[0]; 
          dataGridView1.ClearSelection(); 

          conn.Close(); 
         } 
        } 
       } 
      } 
     } 

任何幫助嗎?謝謝!

您的回答將非常感謝!

回答

1

問題:您正在使用WHERE條款平等=運營商,公司名稱比較。 如果您在等號運算符中使用WHERE,它只會返回完全匹配的記錄。

解決方案:您應該使用LIKE運算符與通配符而不是等號運算符的搜索功能。

試試這個:

string query = "SELECT [ProductCode], [Quantity], [Description], [SubTotal], [Total], [IssuedBy], [To], [Times] FROM [TransRecord] WHERE [To] LIKE @To ORDER BY [To]"; 
cmd.Parameters["@To"].Value = "%"+this.textBox1.Text+"%"; 
+0

我已經試過你的代碼先生,但不幸的是我得到一個錯誤,錯誤說,' FROM子句中的語法錯誤' – Kaoru

+0

@Kaoru:檢查我編輯的答案 –

+0

@Suduhakar Tillapudi:非常感謝您的先生!它的工作! – Kaoru

2

您只需搜索完全匹配。您可能需要使用SubStringLike

在您的查詢中用以下替換WHERE [To] = @To

WHERE [To] LIKE LIKE % @To % 

Check this for more info

1

您使用相等運算符:

WHERE [To] = @To

因此,字符串「再也」永遠不會返回結果記錄與靈再也值爲「拉亞電機「。在這種情況下,您正在查找以「Jaya」開頭的記錄。 SQL支持如查詢:http://www.w3schools.com/sql/sql_like.asp。它會降低查詢速度,並且取決於數據庫引擎可能會或可能不會使用您爲該字段定義的索引。但是,它會產生你期待的結果。您正在尋找這樣的:

WHERE [TO] like 'JAYA%' 

將返回在那裏與「JAYA」開頭的所有記錄