アプリ版:「スタンプのみでお礼する」機能のリリースについて

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
%>

A 回答 (1件)

ん???



>>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ページに何件表示するのか
今、何ページ目にいるのか

あたりの情報が常に取得できてれば可能ですよね。
    • good
    • 0

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