- 締切済み
条件で抽出したデータを12件、1ページ毎に表示
SQLで抽出したデータを12件ずつ、1ページ毎に表示させたいのですが・・・ 次ページへデータの続きをそのまま表示させるようにしたいのですが、うまくできません。 どなたか分かる方がいらっしゃいましたら、是非ご教授ください。 SELECT~WHERE(条件)を入れると次ページをクリックしてもデータを引っ張っていくのは難しいのでしょうか? 検索条件を抽出し、sessionで作成してみたのですが、データを引っ張ることが出来ず、エラーになってしまいます。 前ページ(print2.asp)より検索条件により 例:住所(add1)→福島県 または 住所(add2)→福島県、住所(add3)→いわき市 これをsessionに格納。 ----------------------------- <% '================================================================ ' 初期設定 '================================================================ MaxLog = 12 RecCnt = Request.QueryString("recnum") MovPge = Request.QueryString("pgenum") If (RecCnt = "") Then DefCNT = 1 DefPge = 1 Else DefCNT = CInt(RecCnt) SecCNT = DefCNT - CInt(MaxLog) DefPge = CInt(MovPge) End If '================================================================ ' データベース接続 '================================================================ Set db=Server.CreateObject("ADODB.Connection") db.connectionstring=application("strCString") db.Open '================================================================ ' レコードセット生成 '================================================================ Set rec = Server.CreateObject("ADODB.Recordset") If session("add2") = "" or IsNull(session("add2")) Then SQLS = "SELECT * FROM T_add WHERE 住所1 = '" & session("add1") & "' order by 世帯番号" Else SQLS = "SELECT * FROM T_add WHERE 住所1 = '" & session("add2") & "' AND 住所2 = '" & session("add3") & "' order by 世帯番号" End If With rec .ActiveConnection = db .CursorType = 1 .LockType = 1 .Open SQLS, , , ,&H0001 AllRec = .RecordCount End With %> <FORM METHOD="POST" ACTION="print3.asp" NAME="myform"> <br> <table cellspacing="0" cellpadding="1" width=80% height=100%> <% '================================================================ ' レコード数取得 '================================================================ If (CLng(AllRec) > 0) Then rec.AbsolutePosition = DefCNT recount = 1 Do While not rec.EOF If recount <> Fix(recount/2)*2 Then %> <tr> <% End If %> <td nowrap>〒<%=left(rec("現郵便番号"),3) & "-" & right(rec("現郵便番号"),4)%><br> 市原市<%=rec("現居所1")%> <%=rec("現居所2")%><br><br> <center><%=rec("氏名")%> 様</center><p> </td> <% If recount = Fix(recount/2)*2 Then %> </tr> <% End If DefCNT = DefCNT + 1 recount = recount + 1 rec.MoveNext If DefCNT = (DefPge * MaxLog + 1) Then Exit Do Loop Else Response.Write "<FONT COLOR=#FF0000><B>該当する項目が見つかりませんでした!</B></FONT><P>" End If rec.Close %> </table> <br> <INPUT TYPE="hidden" NAME="cnt" VALUE="<%=recount%>"> <% '======================================================================= ' ページ移動設定 '======================================================================= If (DefPge = 1) And (AllRec <= MaxLog) Then 'PrevLink = "前ページ" 'IndxLink = "<A HREF='print3.asp'>トップページ</A>" NextLink = "次ページ" ElseIf (DefPge = 1) And (AllRec > MaxLog) Then Response.Write "<DIV ALIGN=right>" Response.Write "[<A HREF='print3?recnum=" & DefCNT & "&pgenum=" & DefPge + 1 & "'>次ページ</A>]" Response.Write "</DIV>" ElseIf (DefPge <> 1) And (AllRec <= DefPge * MaxLog) Then Response.Write "<DIV ALIGN=right>" Response.Write "[<A HREF='print3?recnum=" & SecCNT & "&pgenum=" & DefPge - 1 & "'>前ページ</A>]" Response.Write "</DIV>" ElseIf (DefPge <> 1) And (AllRec > DefPge * MaxLog) Then Response.Write "<DIV ALIGN=right>" Response.Write "[<A HREF='print3?recnum=" & SecCNT & "&pgenum=" & DefPge - 1 & "'>前ページ</A>|" Response.Write "<A HREF='print3?recnum=" & DefCNT & "&pgenum=" & DefPge + 1 & "'>次ページ</A>]" Response.Write "</DIV>" End If db.Close: Set db = Nothing %>
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- STICKY2006
- ベストアンサー率29% (1536/5269)
ん??? >>SELECT~WHERE(条件)を入れると次ページをクリックしてもデータを引っ張っていくのは難しいのでしょうか? >>SQLS = "SELECT * FROM T_add WHERE 住所1 = '" & session("add1") & "' order by 世帯番号" >>SQLS = "SELECT * FROM T_add WHERE 住所1 = '" & session("add2") & "' AND 住所2 = '" & session("add3") & "' order by 世帯番号" 「ページ読み込むたびに、SQL発行して、該当する全データ取ってきてる」 SQL文(及びASP構成)見る以上、そうなってますよね。 >>SQLで抽出したデータを12件ずつ、1ページ毎に表示させたいのですが・・・ 決まってること。は、1ページに12件。 なわけですから、 ・SQL文で、●件目~●件目を取得する。 の処理を書くか ・ASP構文で、取得してきた全データの中から、●件目~●件目を表示する の処理を書くか のどっちかかと思いますよ。 1ページに何件表示するのか 今、何ページ目にいるのか あたりの情報が常に取得できてれば可能ですよね。