2017-04-21 9 views
0

誕生月に従ってフィルタリングされたPatientという名前のデータテーブルから、人のリストを取得したいと思います。データテーブルは、要素がmm/dd/YYYYのフォーマットを有する誕生日列を有する。これを行う方法に関するアイデア? 私は現在バインディングソースメソッドを使用しています。私は他の分野に応じてそれをフィルタリングすることができましたが、これを行う方法については考えられません。ありがとうございましたデータテーブルから誕生月に基づいて誕生日をフィルタリングする方法

`Dim bs As New BindingSource 
bs.DataSource = StAnnes.Patient 
    If cmbFilter.Text = "Name" Then 
     bs.Filter = "Patient LIKE '%" & txtboxFilter.Text & "%'" 
    ElseIf cmbFilter.Text = "Sex" Then 
     bs.Filter = "Sex LIKE '%" & txtboxFilter.Text & "%'" 
    ElseIf cmbFilter.Text = "Month of Birth" Then 
     bs.Filter = "'Format('Date of Birth','mmm') LIKE 'Jan'" 
    ElseIf cmbFilter.Text = "Address" Then 
     bs.Filter = "Address LIKE '%" & txtboxFilter.Text & "%'" 
    End If 
    dgvPtList.DataSource = bs` 
+0

問題の正しい解決方法のみ:日付を文字列として保存しない – Fabio

答えて

0

フィルタ式にはフォーマット機能はありません。
おそらく恐ろしい演奏でコンバージョンを使用して問題を回避することができます。

bs.Filter = "SUBSTRING(CONVERT([Date of Birth], 'System.String'), 1,2) = '01'"); 

は、ここでは、我々は変換後の文字列の最初の2つの文字を取って、1月を表す値01に論理比較を適用し、文字列に日時列を変換してみてください。もちろん、これはあなたのロケール設定に対してテストする必要があります。変換によって、どのようにフォーマットされているかわからない文字列が生成されます。私は最初の2文字は月であると仮定しますが、あなたの環境でそれをテストする必要があります。

角括弧の中にスペースを含む列を置くことを忘れないでください。

関連する問題