• ベストアンサー

プログラムのループ

いつも拝見させて頂いております。 ASP+SQLでプログラムを作成しております。 別フォームのテキストボックス(code)をキーにデータを抽出しております。 一つずつ表示するのが手間なのでcodeをcode1,code2,code3と3つのテキストボックスを用意して、 3つそれぞれの関連データを一気に抽出できないか考えております。 下記のプログラムをもう二つ用意してstr=Request.QueryString("code")部分を code1,code2,code3とすると抽出は出来るのですが、 プログラムが長くなってしまいます。 for nextなどを使用して一つのプログラムにしたいのですがうまくいきません。 わかる方がいましたら、ご協力お願いします。 <% Dim obj_c,obj_r Set obj_c = Server.CreateObject("ADODB.Connection") obj_c.Open "db1" Set obj_r = Server.CreateObject("ADODB.Recordset") Dim i for i=1 to 3 str=Request.QueryString("code(i)") sql="select * from a,b where (a.hin_code='" & str &"' )" obj_r.Open sql,obj_c,adOpenStatic,adLockoptimistic,adCmdText %> <table border=1> <tr><th>製品名</th><th>製品コード</th><th>価格</th></tr> <% Do Until(obj_r.EOF=true) Response.Write("<tr><td>" & obj_r("seihin") & "</td>") Response.Write("<td>" & obj_r("hin_code") & "</td>") Response.Write("<td>" & obj_r("kakaku") & "</td></tr>") obj_r.MoveNext Loop Next obj_r.Close Set obj_r =Nothing obj_c.Close Set obj_c =Nothing %>

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

>str=Request.QueryString("code(i)") こうでは? str=Request.QueryString("code" & i)

015_dogi
質問者

お礼

taka_tetsu さんありがとうございます。 おかげで出来ました。感謝!感謝! 分からないことが有りましたら、また宜しくお願いします。

その他の回答 (2)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>Where句を「in」にしてみました。 これだとcodeごとにtableが作成できていないですね。 order by入れたりcodeが変わるたびにtable作り直すようなロジック入れないと。

015_dogi
質問者

お礼

taka_tetsu さん引き続きご回答ありがとうございました。 taka_tetsu さんのご指摘どおり一つのテーブルになってしまいますね。 今回はtaka_tetsu さんのご指摘の str=Request.QueryString("code"&i)で上手くいきました。 ちなみにfor i=1 to 3の配置場所も間違っていました。 皆さんとても参考になりました。ありがとうございます。

  • Kuppycat
  • ベストアンサー率50% (109/216)
回答No.2

<% Dim obj_c,obj_r Set obj_c = Server.CreateObject("ADODB.Connection") obj_c.Open "db1" Set obj_r = Server.CreateObject("ADODB.Recordset") Dim str1, str2, str3 str1=Request.QueryString("code1") str2=Request.QueryString("code2") str3=Request.QueryString("code3") sql="select * from a,b where (a.hin_code in ('" & str1 &"', '" & str2 & "', '" & str3 &"') )" obj_r.Open sql,obj_c,adOpenStatic,adLockoptimistic,adCmdText %> <table border=1> <tr><th>製品名</th><th>製品コード</th><th>価格</th></tr> <% Do Until(obj_r.EOF=true) Response.Write("<tr><td>" & obj_r("seihin") & "</td>") Response.Write("<td>" & obj_r("hin_code") & "</td>") Response.Write("<td>" & obj_r("kakaku") & "</td></tr>") obj_r.MoveNext Loop obj_r.Close Set obj_r =Nothing obj_c.Close Set obj_c =Nothing %> これでどうかな? Where句を「in」にしてみました。

015_dogi
質問者

お礼

Kuppycatさんありがとうございます。 確かにデータの表示は可能でしたが、code別でテーブルを 分けたかったので、for文でなんとかならないか考えていました。 テーブル一つにして表示するには有効かと思いました。 ありがとうございます。