主题:  为何我的数据集无法移动到下一页?

wuzzz

职务:普通成员
等级:1
金币:0.0
发贴:3
注册:2002/6/18 8:12:37
#12002/6/18 15:20:01
我定义了一个数据集,设1屏显示10条,但加入下一页(move to next record)、最后一页(move to last record)等Server Behaviors后却不正常移动。数据集使用的是request.form("xxxx")



7877767

职务:普通成员
等级:2
金币:1.0
发贴:528
注册:2002/2/19 0:11:31
#22002/6/18 15:44:49
把详细的代码写出来看看...



wuzzz

职务:普通成员
等级:1
金币:0.0
发贴:3
注册:2002/6/18 8:12:37
#32002/6/18 15:51:01
代码为:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>

<%
Dim gr__MMColParam
gr__MMColParam = "1"
if (Request.Form("xmsx") <> "") then gr__MMColParam = Request.Form("xmsx")
%>
<%
set gr = Server.CreateObject("ADODB.Recordset")
gr.ActiveConnection = MM_connSITE_STRING
gr.Source = "SELECT * FROM dbo.dhjbxx WHERE xmsx = '" + Replace(gr__MMColParam, "'", "''") + "' and dwdh = '否' ORDER BY dhhm ASC"
gr.CursorType = 0
gr.CursorLocation = 2
gr.LockType = 3
gr.Open()
gr_numRows = 0
%>
<%
Dim Repeat1__numRows
Repeat1__numRows = 10
Dim Repeat1__index
Repeat1__index = 0
gr_numRows = gr_numRows + Repeat1__numRows
%>
<%
' *** Recordset Stats, Move To Record, and Go To Record: declare stats variables

Dim gr_total
Dim gr_first
Dim gr_last

' set the record count
gr_total = gr.RecordCount

' set the number of rows displayed on this page
If (gr_numRows < 0) Then
gr_numRows = gr_total
Elseif (gr_numRows = 0) Then
gr_numRows = 1
End If

' set the first and last displayed record
gr_first = 1
gr_last = gr_first + gr_numRows - 1

' if we have the correct record count, check the other stats
If (gr_total <> -1) Then
If (gr_first > gr_total) Then
gr_first = gr_total
End If
If (gr_last > gr_total) Then
gr_last = gr_total
End If
If (gr_numRows > gr_total) Then
gr_numRows = gr_total
End If
End If
%>
<%
Dim MM_paramName
%>
<%
' *** Move To Record and Go To Record: declare variables

Dim MM_rs
Dim MM_rsCount
Dim MM_size
Dim MM_uniqueCol
Dim MM_offset
Dim MM_atTotal
Dim MM_paramIsDefined

Dim MM_param
Dim MM_index

Set MM_rs = gr
MM_rsCount = gr_total
MM_size = gr_numRows
MM_uniqueCol = ""
MM_paramName = ""
MM_offset = 0
MM_atTotal = false
MM_paramIsDefined = false
If (MM_paramName <> "") Then
MM_paramIsDefined = (Request.QueryString(MM_paramName) <> "")
End If
%>
<%
' *** Move To Record: handle 'index' or 'offset' parameter

if (Not MM_paramIsDefined And MM_rsCount <> 0) then

' use index parameter if defined, otherwise use offset parameter
MM_param = Request.QueryString("index")
If (MM_param = "") Then
MM_param = Request.QueryString("offset")
End If
If (MM_param <> "") Then
MM_offset = Int(MM_param)
End If

' if we have a record count, check if we are past the end of the recordset
If (MM_rsCount <> -1) Then
If (MM_offset >= MM_rsCount Or MM_offset = -1) Then ' past end or move last
If ((MM_rsCount Mod MM_size) > 0) Then ' last page not a full repeat region
MM_offset = MM_rsCount - (MM_rsCount Mod MM_size)
Else
MM_offset = MM_rsCount - MM_size
End If
End If
End If

' move the cursor to the selected record
MM_index = 0
While ((Not MM_rs.EOF) And (MM_index < MM_offset Or MM_offset = -1))
MM_rs.MoveNext
MM_index = MM_index + 1
Wend
If (MM_rs.EOF) Then
MM_offset = MM_index ' set MM_offset to the last possible record
End If

End If
%>
<%
' *** Move To Record: if we dont know the record count, check the display range

If (MM_rsCount = -1) Then

' walk to the end of the display range for this page
MM_index = MM_offset
While (Not MM_rs.EOF And (MM_size < 0 Or MM_index < MM_offset + MM_size))
MM_rs.MoveNext
MM_index = MM_index + 1
Wend

' if we walked off the end of the recordset, set MM_rsCount and MM_size
If (MM_rs.EOF) Then
MM_rsCount = MM_index
If (MM_size < 0 Or MM_size > MM_rsCount) Then
MM_size = MM_rsCount
End If
End If

' if we walked off the end, set the offset based on page size
If (MM_rs.EOF And Not MM_paramIsDefined) Then
If (MM_offset > MM_rsCount - MM_size Or MM_offset = -1) Then
If ((MM_rsCount Mod MM_size) > 0) Then
MM_offset = MM_rsCount - (MM_rsCount Mod MM_size)
Else
MM_offset = MM_rsCount - MM_size
End If
End If
End If

' reset the cursor to the beginning
If (MM_rs.CursorType > 0) Then
MM_rs.MoveFirst
Else
MM_rs.Requery
End If

' move the cursor to the selected record
MM_index = 0
While (Not MM_rs.EOF And MM_index < MM_offset)
MM_rs.MoveNext
MM_index = MM_index + 1
Wend
End If
%>
<%
' *** Move To Record: update recordset stats

' set the first and last displayed record
gr_first = MM_offset + 1
gr_last = MM_offset + MM_size

If (MM_rsCount <> -1) Then
If (gr_first > MM_rsCount) Then
gr_first = MM_rsCount
End If
If (gr_last > MM_rsCount) Then
gr_last = MM_rsCount
End If
End If

' set the boolean used by hide region to check if we are on the last record
MM_atTotal = (MM_rsCount <> -1 And MM_offset + MM_size >= MM_rsCount)
%>
<%
' *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters

Dim MM_keepNone
Dim MM_keepURL
Dim MM_keepForm
Dim MM_keepBoth

Dim MM_removeList
Dim MM_item
Dim MM_nextItem

' create the list of parameters which should not be maintained
MM_removeList = "&index="
If (MM_paramName <> "") Then
MM_removeList = MM_removeList & "&" & MM_paramName & "="
End If

MM_keepURL=""
MM_keepForm=""
MM_keepBoth=""
MM_keepNone=""

' add the URL parameters to the MM_keepURL string
For Each MM_item In Request.QueryString
MM_nextItem = "&" & MM_item & "="
If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
MM_keepURL = MM_keepURL & MM_nextItem & Server.URLencode(Request.QueryString(MM_item))
End If
Next

' add the Form variables to the MM_keepForm string
For Each MM_item In Request.Form
MM_nextItem = "&" & MM_item & "="
If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
MM_keepForm = MM_keepForm & MM_nextItem & Server.URLencode(Request.Form(MM_item))
End If
Next

' create the Form + URL string and remove the intial '&' from each of the strings
MM_keepBoth = MM_keepURL & MM_keepForm
If (MM_keepBoth <> "") Then
MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1)
End If
If (MM_keepURL <> "") Then
MM_keepURL = Right(MM_keepURL, Len(MM_keepURL) - 1)
End If
If (MM_keepForm <> "") Then
MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1)
End If

' a utility function used for adding additional parameters to these strings
Function MM_joinChar(firstItem)
If (firstItem <> "") Then
MM_joinChar = "&"
Else
MM_joinChar = ""
End If
End Function
%>
<%
' *** Move To Record: set the strings for the first, last, next, and previous links

Dim MM_keepMove
Dim MM_moveParam
Dim MM_moveFirst
Dim MM_moveLast
Dim MM_moveNext
Dim MM_movePrev

Dim MM_urlStr
Dim MM_paramList
Dim MM_paramIndex
Dim MM_nextParam

MM_keepMove = MM_keepBoth
MM_moveParam = "index"

' if the page has a repeated region, remove 'offset' from the maintained parameters
If (MM_size > 1) Then
MM_moveParam = "offset"
If (MM_keepMove <> "") Then
MM_paramList = Split(MM_keepMove, "&")
MM_keepMove = ""
For MM_paramIndex = 0 To UBound(MM_paramList)
MM_nextParam = Left(MM_paramList(MM_paramIndex), InStr(MM_paramList(MM_paramIndex),"=") - 1)
If (StrComp(MM_nextParam,MM_moveParam,1) <> 0) Then
MM_keepMove = MM_keepMove & "&" & MM_paramList(MM_paramIndex)
End If
Next
If (MM_keepMove <> "") Then
MM_keepMove = Right(MM_keepMove, Len(MM_keepMove) - 1)
End If
End If
End If

' set the strings for the move to links
If (MM_keepMove <> "") Then
MM_keepMove = MM_keepMove & "&"
End If

MM_urlStr = Request.ServerVariables("URL") & "?" & MM_keepMove & MM_moveParam & "="

MM_moveFirst = MM_urlStr & "0"
MM_moveLast = MM_urlStr & "-1"
MM_moveNext = MM_urlStr & CStr(MM_offset + MM_size)
If (MM_offset - MM_size < 0) Then
MM_movePrev = MM_urlStr & "0"
Else
MM_movePrev = MM_urlStr & CStr(MM_offset - MM_size)
End If
%>



由姓名缩写查个人信息






















单位电话查询


个人电话查询


由姓名查


由姓名缩写查


由电话号码查


由单位编码查


由单位名称查


由爱人姓名查


由安装位置查


电话费用查询


电话管理


返回首页















<%
While ((Repeat1__numRows <> 0) AND (NOT gr.EOF))
%>










<%
Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
gr.MoveNext()
Wend
%>

电话号码


姓名


爱人姓名


单位编码


位置


手机


呼机


E-mail

<%=(gr.Fields.Item("dhhm").value)%> <%=(gr.Fields.Item("xm").value)%> <%=(gr.Fields.Item("arxm").value)%> <%=(gr.Fields.Item("dwbm").value)%> <%=(gr.Fields.Item("zjdz").value)%> <%=(gr.Fields.Item("sjhm").value)%> <%=(gr.Fields.Item("hjhm").value)%> <%=(gr.Fields.Item("email").value)%>








<% If MM_offset <> 0 Then %>
到头 上一条
<% End If ' end MM_offset <> 0 %>
 

<% If Not MM_atTotal Then %>
下一条
到尾
<% End If ' end Not MM_atTotal %>

 



 
     

 




<%
gr.Close()
%>



孤魂野鬼

职务:普通成员
等级:2
金币:1.0
发贴:352
注册:2001/12/20 10:42:58
#42002/6/21 11:56:20
是不是点击时会乱定位?我也出现过这种情况,最后发现是重复设定的问题,你最好检查一下!



topgun

职务:普通成员
等级:2
金币:1.0
发贴:366
注册:2002/3/17 20:53:44
#52002/6/21 20:13:26
先选定重复的范围,做好重复区域后,直接用insert -live objects-recordset navigation bar!
你用的是下一页(一页10条记录),不是下一个记录!