No.2
- 回答日時:
こんにちは。
条件側が「スペース区切り」で、いわゆる「絞り込み検索」ですね。
この場合、検索条件をスペースで区切って、それぞれ変数に入れなければいけません・・・。
そして、変数が「NULL」でない場合だけ、ANDでWHERE句を足していきましょう。
"東京 お台場"と入力。
変数(または配列でも可)に、スペース区切りで代入(この時、スペースを削除する)。
それぞれの変数(または配列のN番目)がNULLでない場合のIF文で、AND条件をくっつける。
こんな感じかと思います。
なんとなくわかります?
(^^ゞ
No.3
- 回答日時:
こんな感じでどうでしょうか?
If name1<>"" Then
name1Tmp = Split(name1," ")
For i = 0 to UBound(name1Tmp)
SQL = SQL & " AND name1 LIKE '%" & name1Tmp(i) & "%'"
Next
End If
この回答への補足
うおお~!できました!有り難うございます(泣)
あとおひとつ、お伺いしてもよろしいでしょうか?(汗)
『半角スペース』でも、『全角スペース』でも対応するにはどうしたらいいのでしょうか?
度重なる質問で、申し訳ございません。
No.4
- 回答日時:
>『半角スペース』でも、『全角スペース』でも対応するにはどうしたらいいのでしょうか?
全角スペースを半角スペースに置換してからSplitで出来ると思います.
If name1<>"" Then
name1Tmp = Split(Replace(name1," "," ")," ")
For i = 0 to UBound(name1Tmp)
SQL = SQL & " AND name1 LIKE '%" & name1Tmp(i) & "%'"
Next
End If
この回答への補足
す・・すごいです。勉強になります有り難うございます!
心よりお礼申し上げます。
あと、最後にひとつだけ教えていただきたいところがあるのですが、、、
http://kototoi.dl.itc.u-tokyo.ac.jp/opac/help/ex …
ここの出版年のところの、
← 1990年から1995年に出版された資料に限定する。という方法も
上記のやり方で可能でしょうか?
No.5
- 回答日時:
>1990年から1995年に出版された資料に限定する。
という方法も>上記のやり方で可能でしょうか?
数値の比較になるので,文字列検索のLIKEとは違いますね.
検索文字列をname1に格納したように,出版年の下限をshuppan1 上限をshuppan2とでもして
If shuppan1<>"" Then
SQL = SQL & " AND 出版年 >=" & shuppan1
End If
If shuppan2<>"" Then
SQL = SQL & " AND 出版年 <=" & shuppan2
End If
のようにしてみてください.
この回答への補足
ご丁寧に、
有り難うございます。ペコリ。
これは、もう何もbetweenなど範囲の指定?など
しなくてもいいのでしょうか?
すいません、よく理解していないもので(^^;)
No.6ベストアンサー
- 回答日時:
>これは、もう何もbetweenなど範囲の指定?など
>しなくてもいいのでしょうか?
出版年の上限と下限が必ず入力されるのであれば
SQL = SQL & " AND 出版年 between " & shuppan1 & " and " & shuppan2
でOKです.
先の例は入力フォームで片方,あるいは両方が空白のまま送信された場合を考慮して,わざわざIf文を付けています.
この回答への補足
なるほど…有り難うございます!
>
>If shuppan1<>"" Then
> SQL = SQL & " AND 出版年 >=" & shuppan1
>End If
>
>If shuppan2<>"" Then
> SQL = SQL & " AND 出版年 <=" & shuppan2
>End If
でやろうと思います。
DBはMDBで、MDBの・・・出版年のフィールド名のところは、"shuppan1"という名前になっているのです…。
これでは、
If shuppan1<>"" Then
SQL = SQL & " AND 出版年 >=" & shuppan1
End If
の、shuppan1という名前が重なってしまってるんで"shuppan1"を"shuppan11"としました。(もちろんテキストの名前も変更しています。)
が検索されません。
説明といたしましては
textに入れた名前からmdbを呼びに行くのは
shuppan11= Request.QueryString("shuppan1")
shuppan2= Request.QueryString("shuppan1")
という風に変えてやっているのですが、
クエリを呼び出す際に何も反応がおこりません。
やはり、どこか変数が間違っているということなんでしょうか?
これだけで推測不可能(だと思いますが…)でしたら、何なりとお申し付けください。
省略ですが、簡単な流れです・・
点線で区切ってますが、すべてつながっています。
'入力フォームの内容を取得、変数に代入
pass1= Request.QueryString("pass1")
shuppan11= Request.QueryString("shuppan1")
shuppan2= Request.QueryString("shuppan1")
'------------------------------------------------
'データベースと接続
Set db = Server.CreateObject("ADODB.Connection")
db.Open "nedandb"
SQL = "SELECT * FROM nedandb WHERE id 'IDが入ってないとSQL文が発行されない
'------------------------------------------------
'MDBから抜き出してきたいフィールド名は『shuppan1』
'『shuppan11』~『shuppan2』に入力した数字を検索したい
If shuppan11<>"" Then
SQL = SQL & " AND shuppan1 >=" & shuppan11
End If
If shuppan2<>"" Then
SQL = SQL & " AND shuppan1 <=" & shuppan2
End If
'------------------------------------------------
SQL = SQL & " ORDER BY hp_date DESC" '日付の新しい順に並べる
'SQL文を実行してレコードセットを取得
Set rs = db.Execute(SQL)
%>
'------------------------------------------------
'検索結果の表示
SQL : <%= SQL %><P>
検索条件 本:"<%= nedan11 %>"
こんな感じの記述です。
どうも、この記述ですとSQL文が発行されないのです。
しかし、
If namae<>"" Then
namaeTmp = Split(Replace(namae," "," ")," ")
For i = 0 to UBound(namaeTmp)
SQL = SQL & " AND namae LIKE '%" & namaeTmp(i) & "%'"
Next
End If
namaeだけだと
namae= Request.QueryString("namae")
と指定しやすいのでできています。
もしかして、この変数の時に私の設定が間違えているのかと考えたのですが
いろいろやっても解決されませんでした。。
長くてすいません。
No.7
- 回答日時:
>shuppan11= Request.QueryString("shuppan1")
>shuppan2= Request.QueryString("shuppan1")
Request.QueryStringで受け取ることが出来るのは,フォームからgetで送られた値です.
postならRequest.Formになります.
入力フォームの出版年を入れるところが
<input name="shuppan1" type="text">以降
<input name="shuppan2" type="text">以前
のようになっているとして
shuppan1 = Request.QueryString("shuppan1")
shuppan2 = Request.QueryString("shuppan2")
で受け取れます.
偶然にもデータベース側の出版年がshuppan1と言う名前なのでしたら
shuppan11 = Request.QueryString("shuppan1")
shuppan2 = Request.QueryString("shuppan2")
としても良いですが,入力フォーム側の名前がどうなっているのか確認してください.
この回答への補足
入力フォーム側の名前とは
<input name="shuppan1" type="text">以降
<input name="shuppan2" type="text">以前
のことでよろしいですよね?
No.8
- 回答日時:
# 入力フォーム側の名前とは
# <input name="shuppan1" type="text">以降
# <input name="shuppan2" type="text">以前
# のことでよろしいですよね?
name="名前"
の形で記述した部分です.
<input type="text">
がテキストボックスを表し
それに名前を付けたりサイズを指定する場合は
<input name="namae" type="text" size="10">
のように書きます.
最初の質問内容である絞込みの回答から
派生した質問が次々と出て来て収集が付かなくなりつつあるので,一旦この辺で区切りを付けて,新たな質問は別途改めてと言うことでいかがでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCEL関数(数式)を教えてください 2 2022/06/08 18:32
- 工学 ちなみになぜv=(v・e1)e1+(v・e2)e2はe1やe2が、正規直交基底でないと成り立たないと 2 2022/12/22 17:22
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- Visual Basic(VBA) 別のファイルへ条件を指定してセルの値を転記したい 4 2022/04/04 15:38
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) WORKDAY関数 4 2023/06/08 13:23
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- その他(プログラミング・Web制作) Rでのスクリプトのご相談 3 2022/12/08 16:22
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onClickとsubmitの処理順序
-
VBScriptで未入力のチェック(...
-
ASP エラーチェック VBScript
-
テキストエリア入力文字数の表...
-
テキストフィールドに入力した...
-
日付入力欄の表示形式を自動的...
-
最初の入力を判断
-
複数の入力欄についての入力チ...
-
vbsでフォームに値を入力できない
-
フォームの値が0だったら空白...
-
PDFフォームで条件つき金額を表...
-
テキストボックスを無効にする...
-
return trueとreturn falseの用...
-
プルダウン 項目が多いので先頭...
-
submitボタン押下時にPOSTされ...
-
onchangeイベントを強制的に発...
-
大文字か小文字かを判断する方法
-
【jQuery】input nameの文字列...
-
Selectボックスの幅を自動で広...
-
ラジオボタンにタブインデック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onClickとsubmitの処理順序
-
テキストボックス入力を半角英...
-
PDFフォームで条件つき金額を表...
-
フォームの値が0だったら空白...
-
javascriptで入力フォームが空...
-
条件により、リンク先に画面遷...
-
フォームから入力すると、入力...
-
VBScriptで未入力のチェック(...
-
日付入力欄の表示形式を自動的...
-
Javascriptが機能せず原因が分...
-
submit後、同じ入力欄に戻らせ...
-
テキストフィールドに入力した...
-
JSPとJavaScriptの連携について...
-
最初の入力を判断
-
イベント発生時に入力待ち状態...
-
過去日付、年の切り替え
-
カレンダーをテキストエリアに...
-
入力した文字を大文字に変換し...
-
リンククリック → テキスト自...
-
javascriptで入力禁止文字をチ...
おすすめ情報