プロが教える店舗&オフィスのセキュリティ対策術

「1.htm」のフォームで入力された値を、
「2.asp」で出力するASPを作成しました。
以下のようなコードになってしまいました。
動作はするのですが、
もう少し簡潔にならないかと考えています。
どうかご教授ください。
宜しくお願いします。

****1.htm***
<input name="test1" type="text">
<INPUT type="radio" name="test1_1" value="y">あり 
<INPUT type="radio" name="test1_1" value="n">なし

<input name="test2" type="text">
<INPUT type="radio" name="test2_2" value="y">あり 
<INPUT type="radio" name="test2_2" value="n">なし



<input name="test5" type="text">
<INPUT type="radio" name="test5_5" value="y">あり 
<INPUT type="radio" name="test5_5" value="n">なし


***2.asp*****
test1で値が入力されていたらその値をもとにクエリを組んで、
結果を出力しています。

If Not test1 = "" Then
Set db=Server.CreateObject("ADODB.Connection")
db.Provider = "Microsoft.Jet.OLEDB.4.0"
db.ConnectionString = Server.MapPath("test.mdb")
db.open

Set rs = db.Execute("SELECT * FROM テーブル1 WHERE ((テーブル2.番号)='" & test1 & "')")

ObjTS.WriteLine " & rs.Fields.Item("名前") & "
If test1_1 = "y" then
ObjTS.WriteLine "メッセージ"
End If

rs.Close
db.Close
Set db = Nothing
End If


If Not test2 = "" Then
Set db=Server.CreateObject("ADODB.Connection")
db.Provider = "Microsoft.Jet.OLEDB.4.0"
db.ConnectionString = Server.MapPath("test.mdb")
db.open

Set rs = db.Execute("SELECT * FROM テーブル1 WHERE ((テーブル2.番号)='" & test2 & "')")

ObjTS.WriteLine " & rs.Fields.Item("名前") & "
If test2_2 = "y" then
ObjTS.WriteLine "メッセージ"
End If

rs.Close
db.Close
Set db = Nothing

End If

……

If Not test5 = "" Then
Set db=Server.CreateObject("ADODB.Connection")
db.Provider = "Microsoft.Jet.OLEDB.4.0"
db.ConnectionString = Server.MapPath("test.mdb")
db.open

Set rs = db.Execute("SELECT * FROM テーブル1 WHERE ((テーブル2.番号)='" & test5 & "')")

ObjTS.WriteLine " & rs.Fields.Item("名前") & "
If test5_5 = "y" then
ObjTS.WriteLine "メッセージ"
End If

rs.Close
db.Close
Set db = Nothing
End If

A 回答 (1件)

繰り返し記述しているコードのどの部分が共通していてどの部分が固有なのかを特定しましょう



お示しのコードなら
テキストボックスとラジオボタンが違うだけのように思います
ならばこの2つを引数にしたプロシージャを書けば良いように思います

Sub MakeTS(txt,rd)
  Set db=Server.CreateObject("ADODB.Connection")
  db.Provider = "Microsoft.Jet.OLEDB.4.0"
  db.ConnectionString = Server.MapPath("test.mdb")
  db.open

  Set rs = db.Execute("SELECT * FROM テーブル1 WHERE ((テーブル2.番号)='" & txt & "')")

  ObjTS.WriteLine " & rs.Fields.Item("名前") & "
  If rd = "y" then
    ObjTS.WriteLine "メッセージ"
  End If

  rs.Close
  db.Close
  Set db = Nothing
End Sub

呼び出し部分は
if test1<>"" then
  MakeTS test1, test1_1
end if
といった具合です

db、rs、ObjTSなどはグローバル変数にしておきましょう
    • good
    • 0
この回答へのお礼

返信遅れて申し訳ありません。
回答ありがとうございます。
教えていただいたようにするとうまくできました。
どうもありがとうございました。

お礼日時:2007/12/18 12:59

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