- ベストアンサー
プログラムのループ
いつも拝見させて頂いております。 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 %>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>str=Request.QueryString("code(i)") こうでは? str=Request.QueryString("code" & i)
その他の回答 (2)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>Where句を「in」にしてみました。 これだとcodeごとにtableが作成できていないですね。 order by入れたりcodeが変わるたびにtable作り直すようなロジック入れないと。
お礼
taka_tetsu さん引き続きご回答ありがとうございました。 taka_tetsu さんのご指摘どおり一つのテーブルになってしまいますね。 今回はtaka_tetsu さんのご指摘の str=Request.QueryString("code"&i)で上手くいきました。 ちなみにfor i=1 to 3の配置場所も間違っていました。 皆さんとても参考になりました。ありがとうございます。
- Kuppycat
- ベストアンサー率50% (109/216)
<% 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」にしてみました。
お礼
Kuppycatさんありがとうございます。 確かにデータの表示は可能でしたが、code別でテーブルを 分けたかったので、for文でなんとかならないか考えていました。 テーブル一つにして表示するには有効かと思いました。 ありがとうございます。
お礼
taka_tetsu さんありがとうございます。 おかげで出来ました。感謝!感謝! 分からないことが有りましたら、また宜しくお願いします。