- - PR -
Gridview 複数検索
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-01-11 14:52
お世話になります
複数テキストボックス配置でGridviewをあいまいに絞込み検索させています 下記 WHERE ((列1 LIKE '%' + @param1 + '%') OR (列1 IS NULL AND @param1 = '')) AND ((列2 LIKE '%' + @param2 + '%') OR (列2 IS NULL AND @param2 = '')) 上記の内容で検索させていますが日付になると不可のようです 書式は{0:yyyy/MM/dd}です SQL及びパラメータの追加で日付けも検索可能だと思うのですが 手法が分かりません 分かる方宜しくお願いします | ||||
|
投稿日時: 2008-01-12 05:36
日付は
BETWEEN fromdate AND todate を使用したらどうでしょうか。 _________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 | ||||
|
投稿日時: 2008-01-15 10:14
お返事ありがとうございます
当方初心者なのでできればコードで願いたいのですが 宜しくお願いします。 | ||||
|
投稿日時: 2008-01-15 10:56
調べたのですがBETWEENは、日付型で間に挟まれた物を検出させることができる
演算子ですね? Accessで動作確認取れました。 WHERE (((管理簿.日付) Between [Forms]![フォーム1]![テキスト0] And [Forms]![フォーム1]![テキスト2])); これをどのように組み合わせるのかわかりません | ||||
|
投稿日時: 2008-01-15 13:50
はじめまして。
データベースはSQL Serverなのですか? あと、日付はどのように検索させたいのですか? テキストボックスに開始日付と終了日付を指定して、その範囲で検索したいのか、 日付を一つ指定して、イコールで検索させたいのか、によって変わると思います。 | ||||
|
投稿日時: 2008-01-15 14:45
お返事ありがとうございます データベースはAccessです 日付けの理想検索方法は Textbox1、開始日だけで検索可能 Textbox2、終了日付だけで検索可能 両方入力するとその範囲で検索可能 3パターンが理想です。 可能ですか? | ||||
|
投稿日時: 2008-01-15 16:01
ヒマがあったので組んでみた。
検索条件の「日付」がDateTimeだともうちょっと違ってくるでしょうが、 要は条件によってSQLを変えてあげればいけますよね? ってそういうことが聞きたいんじゃないのかな・・・。 (テキトーに組んでるので異常処理とかは省いてます) VS2005 C# 表示用グリッド: private System.Windows.Forms.DataGridView dataGrid1; 開始日テキストボックス: private System.Windows.Forms.TextBox textFmDt; 終了日テキストボックス: private System.Windows.Forms.TextBox textToDt; 検索ボタン: private System.Windows.Forms.Button btnSearch; DB ACCSESS2003 SP2 テーブル ID:オートナンバー型 Hiduke:テキスト型 ソース 〜割愛 using System.Data.OleDb; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnSearch_Click(object sender, EventArgs e) { // 1)変数の宣言 OleDbConnection OleConn = new OleDbConnection(); OleDbDataAdapter OleDA; DataSet dtSet = new DataSet("DataTable"); DataTable dtTable; string strSql ; // 2)接続文字列の作成 OleConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=C:\\WORK\\実験\\@IT\\TestDB.mdb;" + "Persist Security Info=False"; // 3)データを取得するためのSQL文を作成する strSql = "SELECT * FROM TABLE1 "; if ((textFmDt.Text != "") && (textToDt.Text != "")) { //開始・終了ともに入力あり strSql += "WHERE Hiduke BETWEEN "; strSql += "'" + textFmDt.Text + "'"; strSql += " AND "; strSql += "'" + textToDt.Text + "'"; } else if (textFmDt.Text != "") { //開始のみ入力あり strSql += "WHERE Hiduke = "; strSql += "'" + textFmDt.Text + "'"; } else if (textToDt.Text != "") { //終了のみ入力あり strSql += "WHERE Hiduke = "; strSql += "'" + textToDt.Text + "'"; } else { //開始・終了ともに入力なし MessageBox.Show("検索条件を指定してください。"); return; } OleDA = new OleDbDataAdapter(strSql, OleConn); // 4)データセットにデータを取得する OleDA.Fill(dtSet, "DataTable"); // 5)データセットからテーブルを取得する dtTable = dtSet.Tables["DataTable"]; // DataGridにデータを表示する dataGrid1.DataSource = dtSet.Tables[0]; } } } | ||||
|
投稿日時: 2008-01-15 16:03
@StartDate、@EndDateは10桁の"yyyy/MM/dd"形式の文字列です。 この方法でどうでしょうか。 もっといい方法があるのかもしれないですが、私にはこれしか思いつきませんでした。 参考にならなかったらすみません。 |
1|2|3
次のページへ»