- ベストアンサー
一つのテキストフィールドで抽出データを変えたい
- テキストフィールドを使用して複数の抽出条件を検索する方法について相談です。コードまたは名前で検索することができるようにしたいですが、現在は名前のみでの検索ができてしまいます。設定方法が間違っているのか、どうすれば両方の条件で検索できるようになるのか知りたいです。
- 一つのテキストフィールドでコードまたは名前を使用して抽出データを検索したいです。現在は名前のみでの検索が可能ですが、コードでも検索できるようにしたいです。具体的には、コードが指定した値以上または名前が指定した文字列以上のデータを検索したいです。しかし、現在の設定では名前のみでの検索になってしまいます。どのように設定すれば両方の条件で検索できるようになるのか教えてください。
- 一つのテキストフィールドでコードと名前の両方を使用して抽出データを検索したいです。現在は名前のみでの検索ができていますが、コードでも検索できるようにしたいです。具体的には、コードが指定した値以上または名前が指定した文字列以上のデータを検索したいです。しかし、現在の設定ではコードの検索がうまくいきません。正しい設定方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>ただ、nameの英数字内に”-”(ハイフン)がのでこれで 判断できますでしょうか? というか、VBScriptなんでしょうか?言語を書いて頂かないと。 まぁ、それでもVBでもVBAでもVBSでも使えるInStr()が楽かな? InStr()で文字列中に特定の文字列があるか判断できますのでハイフンの有無で振り分けが可能かと。
その他の回答 (2)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>やはりSQLだけでは無理でしたか。 いえ、無理ではないんですが、普通しません。 caseを使えば可能です。 ただ、検索条件となる項目をいじるとなると、インデックスが張ってある場合、検索スピードに影響が出るのでやりません。 それに、こねくりまわしてSQLを作成したとしても、結局codeかnameかどちらを検索対象にするかは外部から与える必要があります。それを考えるとメリットは0ですね。 >条件の振り分けが難しいと思ったので・・・ codeかnameかを判断可能な項目は無いんですか? それでIfで振り分けるのが一般的なつくりかと。
お礼
taka_tetsuさんありがとうございます。 codeの場合8桁の数字になります。 nameの場合は英数字で長さは決まっておりません。 ただ、nameの英数字内に”-”(ハイフン)がのでこれで 判断できますでしょうか? ハイフンの位置が一意ではありませんが可能でしょうか?
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>sql="select * from A where (code>='" & str &"' or name>='" & str &"')" これって、SQL文はプログラムで文字列連結して作ってるだけですよね。VBか、VBAか、VBScriptですよね。 無理やりSQLだけですることではないような。 単純に、codeが入力されていたら sql="select * from A where (code>='" & str &"')" を、 nameが入力されていたら sql="select * from A where (name>='" & str &"')" ってSQL文を文字列で作るだけですよね。 条件の振り分けはIfでやればいいわけだし。 あとは、codeとnameを両方指定されたときにどうするかだけかと思いますけど。
お礼
taka_tetsuさんご回答ありがとうございます。 やはりSQLだけでは無理でしたか。 条件の振り分けが難しいと思ったので・・・ もう一度プログラムを考え直して見ます。
お礼
taka_tetsu さんありがとうございます。 VBScliptでinstr()を試してみます。 がんばってみます。