トップ回答者
日付範囲&名前の検索の仕方

質問
-
DataGridViewに、日付範囲と、名前が一致した一覧を表示させたいのですが、コードがわからないので教えてください。
データセット名は「業務」としています。データテーブル名は「売上」です。
DateTimePicker1に最初の日付、
DateTimePicker2に最終の日付、
ComboBox1に名前一覧を表示できるようにしてあります。
Button1を押したら上記の条件で検索できるようにしたいのですが何をどう組み合わせればよいのかわからないです。手持ちの参考書にはDateTimePickerについてあまり詳しく載っておりませんでした。日付の値を取得するには「DateTimePicker_ValueChanged」でするのでしょうか?とにかくどうすればよいものか悩んでいます。お知恵を拝借したいのでよろしくお願いします。
回答
-
TableAdapterは使ったことがありますか? まずはTableAdapterを作成してみて下さい。この中でselectのSQL文を作成することになります。
作成した後は、フォームに貼り付けたDataGridViewの右上の小さい三角から、データソースの選択で、TableAdapter作成時に作成したデータテーブルを選択して下さい。自動的に、そのデータテーブルを使用するBindingSourceが生成されて、それがDataGridViewのデータソースになります。あとは、検索ボタンを押したら、TableAdapte作成時に作成された選択の関数(デフォルトならFill)に、日付などのパラメータを渡して実行するだけです。この結果、データテーブルが更新され、その結果がDataGridViewに通知されて、DataGridViewはそのデータテーブルの内容で表示されます。
すべての返信
-
お返事ありがとうございました。
色々試したのですが、MonthCalendarを使って、TextBox1に開始日TextBox2に最終日を入れることにしました。TextBoxにそれぞれ値を表示させることはできたのですが、この後どうしてよいかわかりません。
データベースはAccessを使用しています。
Private Sub MonthCalendar1_DateChanged(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DateRangeEventArgs) Handles MonthCalendar1.DateChanged
TextBox1.Text = MonthCalendar1.SelectionStart.ToString("d")
TextBox2.Text = MonthCalendar1.SelectionEnd.ToString("d")
End SubComboBox1の名前を取得したあと、SQL文などを入れたら良いのでしょうか?
アドバイスお願いします。
-
TableAdapterは使ったことがありますか? まずはTableAdapterを作成してみて下さい。この中でselectのSQL文を作成することになります。
作成した後は、フォームに貼り付けたDataGridViewの右上の小さい三角から、データソースの選択で、TableAdapter作成時に作成したデータテーブルを選択して下さい。自動的に、そのデータテーブルを使用するBindingSourceが生成されて、それがDataGridViewのデータソースになります。あとは、検索ボタンを押したら、TableAdapte作成時に作成された選択の関数(デフォルトならFill)に、日付などのパラメータを渡して実行するだけです。この結果、データテーブルが更新され、その結果がDataGridViewに通知されて、DataGridViewはそのデータテーブルの内容で表示されます。
-
お返事ありがとうございます。
TableAdapterを使ったことあります。検索条件ビルダで作成するんですよね?名前のみで検索とかは、何度も作ったことがあります。もしかして、あの画面で日付範囲&名前で検索できるんですか?
何もわからないので、一生懸命コードを作ろうとして悩んでいました・・・。
さっそく、検索条件ビルダで入力しようと思ったのですが、TextBox1に入った日付の値をTextBox1.Textとしたら、エラーメッセージが出て、「TO_DATE関数が必要である可能性があります」と出ました。手持ちの参考書に範囲の指定は、BETWEEN演算子を使うとありましたが、これもうまくいきません。どこがおかしいか教えていただけますか?検索ビルダに以下の文を書きました(エラーで動作しません・・・)
WHERE BETWEEN 日付 = ((TextBox1.[TexT])AND(TextBox2.[TexT]))AND(名前 = 'ComboBox1.[Text]')