- ベストアンサー
チェックボックスの使い方
VBスクリプトでよくわからないところがあるので教えてください。たくさんのチェックボックスがあるので、For i To ~Next の構文を使って効率よくチェックされたものだけSQLの構文に取り入れて検索しようとしたのですがうまくゆきません。どのようにしたらよいでしょうか。 今試してみたのは、検索条件の設定画面で、 <input type=checkbox name=tatemono(0) value=自社使用>自社使用 <input type=checkbox name=tatemono(1) value=事業用>事業用 <input type=checkbox name=tatemono(2) value=電算センター >電算センター というようなチェックボックスを 検索処理用ページで SQL="SELECT * FROM [データ] " 'チェックボックスのチェック数が0でなければWHERE文をいれるflagをTrueにしておく If Request.Form("tatemono").Count>0 Then SQL=SQL & "WHERE " flag=True End If 'チェックボックスを最初から調べてチェックされていたらその項目がyesになっているという条件をSQL文に追加する For i=1 To Request.Form("tetemono").Count If Request.Form("tatemono")(i)<>"" Then fldname=Request.Form("tetemono")(i) If flag=True Then SQL = SQL & "AND" Else SQL = SQL & "WHERE" End If SQL= SQL & fldname & "=Yes" End If Next とやってみたのですが、ぜんぜん駄目みたいです。 根本的にどこか間違ってますよね・・・。 直すところを教えてください。 お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
aspではVBやPHPのようにフォームの項目を配列として取り扱うことは出来ません。下記のように行えばいいんじゃないでしょうか。 Dim tatemonoCount Dim strSQL Dim strWhere tatemonoCount = 2 '自分で件数を明記する strWhere = "" For i = 0 To tatemonoCount If Request.Form("tetemono(" & i & ")") <> "" Then strWhere = strWhere & "文字列と添え字iから作成されるフィールド名" = -1 End If Next strSQL="SELECT * FROM [データ] " If strWhere <> "" Then strSQL = strSQL & strWhere End If 'SQLの実行
その他の回答 (1)
- Bonjin
- ベストアンサー率43% (418/971)
>うまくゆきません うまくいかない場合は、自分の予想の動きと、実際の結果を書きましょう。 とりあえず、どこが悪いのか切り分けてみる必要があります。今回の場合、 ・チェックボックスの値を取得 ・SQLを実行 のどちらかに問題があると考えられます。 私が見たところチェックボックスの値が取れていないのではないかと思われます。 >name=tatemono(0) >Request.Form("tetemono") これではtatemono(0)の値を取得できません。Request.Form("tatemono(0)")でなければ取得できません。
補足
はい。ASPでのチェックボックスの値の取得の仕方が今ひとつよくわかっていないんです。 もう一度テストして試してみます。 form name を統一すると、チェックされたものだけのvalueがコンマ区切りで取得できるところまではわかったんですが、ひとつひとつを取り出したかったので、変なことをしてしまいました。
お礼
Request.Form("tetemono").Countはチェックされた数を返してくるだけですよね。間違ってました。 しかもHTML画面をForm("tatemono")にしてないし・・・。 もう一度整理して書き直してみます。 とても参考になりましたありがとうございました。