「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
繰り返し記述しているコードのどの部分が共通していてどの部分が固有なのかを特定しましょう
お示しのコードなら
テキストボックスとラジオボタンが違うだけのように思います
ならばこの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などはグローバル変数にしておきましょう
お礼
返信遅れて申し訳ありません。 回答ありがとうございます。 教えていただいたようにするとうまくできました。 どうもありがとうございました。