2016-07-07 13 views
-1

私はこのC#クラスの割り当てに取り組んでいます。 従業員検索プログラミング問題1で作成したPersonnel.mdfデータベースに接続するアプリケーションを作成します。アプリケーションのフォームにEmployeeテーブルが表示されます。 DataGridViewコントロールアプリケーションでは、ユーザーがテキストボックスに名前を指定してから、その名前をEmployeeテーブルで検索する必要があります。アプリケーションは、指定された名前の完全一致または部分一致を含む行を表示する必要があります。C#従業員名前で検索

指定された名前の完全一致または部分一致を含む行をアプリケーションに表示させることに問題があります。ここで

は、私は私のSQLのSELECT文のための持っているものである:ここでは

SELECT EmployeeID, Name, Position, [Hourly Pay Rate] 
FROM Employee 
WHERE Name LIKE '%' + @name + '%' 

は、[検索のための私のフォームのコードは次のとおりです。私のテーブルで

private void searchButton_Click(object sender, EventArgs e) 
     { 
      this.employeeTableAdapter.NameSearch 
       (this.personnelDataSet.Employee, searchNameTextBox.Text); 
     } 

、例えば、私はミシェルを持っていますWilcoxとMichael Gleasonの場合、アプリケーションのテキストボックスにMichを入力して検索をクリックすると、値が戻ってきません。私は、テーブルの両方の行を見ることを期待しています。 また、私が最初の名前、マイケルを入れただけでは何も返されません。行が返される唯一の時間は、正確なフルネームで入力する場合です。

私はプログラムを修正するためにどこを探しているべきですか?

+0

と従業員名LIKE「%のミシガン州から選択した社員、名前、ポジション、[時給レート]を試します% '何か戻ってきますか? – Oli

+0

はい、私はそれをハードコード場合、2行が返されます。残念ながら、それは私が探す必要のある検索条件の唯一の組み合わせではありません。別の例は、John CarsonとSteve Johnsonです。私がジョンを検索すると、その両方の値が返ってくるはずです。しかし、私がMichをハードコーディングすれば、それはそのようには機能しません。 –

+1

私は@nameに本当にそれがそう思う価値があることを確認したいと思います。 – Oli

答えて

0

私はここで、バックエンドのSQL Serverで使用される照合により多くの情報を見てしまう - ここで説明したように、「比較LIKE照合の影響を受けている」ので、私はそれを持ち出すhttps://support.microsoft.com/en-us/kb/322112

理由がある - https://msdn.microsoft.com/en-us/library/ms179859.aspx

以下に、あなたのSELECT文は、このうちなるかもしれ変更する:あなたは、ハードコードしたいとした場合

SELECT EmployeeID, Name, Position, [Hourly Pay Rate] 
FROM Employee WHERE Name 
LIKE '%' + @name + '%' 
OR LIKE @name + '%' 
+0

私は記事を読んで、彼らに感謝します。私もあなたの提案を試みたが、うまくいかなかった。私はまだすべての行を取得するクエリを取得していません。実際、今は行を表示させるために、検索で正確なフルネームを取得する必要があります。 –

+0

テーブルデザインを共有できますか? – SqlOnly

+0

以下を実行して照合を共有できますか? SELECT CONVERT(varchar、SERVERPROPERTY( 'collat​​ion')); – SqlOnly