アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

とやってみたのですが、ぜんぜん駄目みたいです。
根本的にどこか間違ってますよね・・・。
直すところを教えてください。
お願いします。

A 回答 (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の実行
    • good
    • 0
この回答へのお礼

Request.Form("tetemono").Countはチェックされた数を返してくるだけですよね。間違ってました。
しかもHTML画面をForm("tatemono")にしてないし・・・。
もう一度整理して書き直してみます。
とても参考になりましたありがとうございました。

お礼日時:2005/03/01 10:35

>うまくゆきません


うまくいかない場合は、自分の予想の動きと、実際の結果を書きましょう。

とりあえず、どこが悪いのか切り分けてみる必要があります。今回の場合、
・チェックボックスの値を取得
・SQLを実行
のどちらかに問題があると考えられます。

私が見たところチェックボックスの値が取れていないのではないかと思われます。
>name=tatemono(0)
>Request.Form("tetemono")
これではtatemono(0)の値を取得できません。Request.Form("tatemono(0)")でなければ取得できません。

この回答への補足

はい。ASPでのチェックボックスの値の取得の仕方が今ひとつよくわかっていないんです。
もう一度テストして試してみます。
form name を統一すると、チェックされたものだけのvalueがコンマ区切りで取得できるところまではわかったんですが、ひとつひとつを取り出したかったので、変なことをしてしまいました。

補足日時:2005/03/01 10:15
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!