- PR -

Gridview 複数検索

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-01-17 21:49
引用:

BBSRさんの書き込み (2008-01-17 20:05) より:

WEBも自身がありません初心者ですみません


初心者であることは何ら問題はない。
でも、自分で考えようとしないことは、大いに問題だと思う。

引用:

複数テキストボックス配置でGridviewをあいまいに絞込み検索させています
下記
WHERE ((列1 LIKE '%' + @param1 + '%') OR (列1 IS NULL AND @param1 = '')) AND ((列2 LIKE '%' + @param2 + '%') OR (列2 IS NULL AND @param2 = ''))

上記の内容で検索させていますが日付になると不可のようです


ここまでできていて、
引用:

WHERE (((管理簿.日付) Between [Forms]![フォーム1]![テキスト0] And [Forms]![フォーム1]![テキスト2]));

これをどのように組み合わせるのかわかりません


なぜこうなるのか、理解できなかった。
上のコードが、どこかからコピーしてきて、自分では何にも考えてないと仮定すると、理解できる。

せっかく持っているんだから、頭使おうぜ、な!
BBSR
大ベテラン
会議室デビュー日: 2006/08/30
投稿数: 121
お住まい・勤務地: 大阪
投稿日時: 2008-01-17 22:35
引用:

Jittaさんの書き込み (2008-01-17 21:49) より:
引用:

BBSRさんの書き込み (2008-01-17 20:05) より:

WEBも自身がありません初心者ですみません


初心者であることは何ら問題はない。
でも、自分で考えようとしないことは、大いに問題だと思う。

引用:

複数テキストボックス配置でGridviewをあいまいに絞込み検索させています
下記
WHERE ((列1 LIKE '%' + @param1 + '%') OR (列1 IS NULL AND @param1 = '')) AND ((列2 LIKE '%' + @param2 + '%') OR (列2 IS NULL AND @param2 = ''))

上記の内容で検索させていますが日付になると不可のようです


ここまでできていて、
引用:

WHERE (((管理簿.日付) Between [Forms]![フォーム1]![テキスト0] And [Forms]![フォーム1]![テキスト2]));

これをどのように組み合わせるのかわかりません


なぜこうなるのか、理解できなかった。
上のコードが、どこかからコピーしてきて、自分では何にも考えてないと仮定すると、理解できる。

せっかく持っているんだから、頭使おうぜ、な!


お返事ありがとうございます
確かに
WHERE ((列1 LIKE '%' + @param1 + '%') OR (列1 IS NULL AND @param1 = '')) AND ((列2 LIKE '%' + @param2 + '%') OR (列2 IS NULL AND @param2 = ''))
これは教えていただいたものですが
WHERE (((管理簿.日付) Between [Forms]![フォーム1]![テキスト0] And [Forms]![フォーム1]![テキスト2]));
これはaccessさんのヒントを元に時間かけてaccessで作りましたややこしい。
申し訳ありませんがこちらも真剣に悩んでます。
参考にさせて頂きます。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-01-19 21:42
引用:

BBSRさんの書き込み (2008-01-17 22:35) より:

お返事ありがとうございます
確かに
WHERE ((列1 LIKE '%' + @param1 + '%') OR (列1 IS NULL AND @param1 = '')) AND ((列2 LIKE '%' + @param2 + '%') OR (列2 IS NULL AND @param2 = ''))
これは教えていただいたものですが
WHERE (((管理簿.日付) Between [Forms]![フォーム1]![テキスト0] And [Forms]![フォーム1]![テキスト2]));
これはaccessさんのヒントを元に時間かけてaccessで作りましたややこしい。
申し訳ありませんがこちらも真剣に悩んでます。
参考にさせて頂きます。


 ええ、「WHERE (((管理簿.日付) Between [Forms]![フォーム1]![テキスト0] ...」の方は、ご自身で考えられたのだとわかりました。で、このうち、SQL として不変の部分と、外部からデータとして供給されるパラメータの部分はどこですか?最初のコードが理解できていれば、「@param1」と「[Forms]![フォーム1]![テキスト0]」が対応するとわかったのではないでしょうか。そこを置き換えると、2008-01-15 16:01 ぴんふさんのコードと、ほぼ同等になります。

 ああ、先の「なぜこうなるのか、理解できなかった。」は、「これをどのように組み合わせるのかわかりません」に対してです。「@param1」が何か、を理解していないから、置き換えできなかったのだな、と。そこで置き換えができていれば(していれば)、Accessさんの返答より後は不要な会話だと思います。


 んで、もう一つ。
WHERE (((管理簿.日付) Between 「日付として最小の値」 And [Forms]![フォーム1]![テキスト2]));
または、
WHERE (((管理簿.日付) Between [Forms]![フォーム1]![テキスト0] And 「日付として最大の値」));
とすると、挿入する値を変えるだけで、組み立てる SQL はひとつになりますよね?

 DBMS に対して、不変の SQL と、可変であるパラメータを分けて与えると、2回目以降の検索が早くなる可能性があります。できるだけ SQL は変化させず、パラメータで対応できるところはパラメータで対応するようにしてみましょう。

スキルアップ/キャリアアップ(JOB@IT)