Here is my code for my recordset and paging. The problem i am having is that after a search, say we have 1 to 10 of 39, when you click next it displays record 1 to 10 of 129. I cant find what i have to change to keep the paging within the search param. Its set to keep url and form and offset 10. but it will not offset 10 per the var entered into the search field.<%@LANGUAGE="JAVASCRIPT"%><!--#include virtual="/asp/Connections/Products.asp" --><%var rsCatalog__MMColParam = "%";if (String(Request.Form("searchText")) != "undefined" && String(Request.Form("searchText")) != "") { rsCatalog__MMColParam = String(Request.Form("searchText"));}%><%var rsCatalog__MMColParam = "%";if (String(Request.Form("searchText")) != "undefined" && String(Request.Form("searchText")) != "") { rsCatalog__MMColParam = String(Request.Form("searchText"));}%><%var rsCatalog__MMColParam = "%";if (String(Request.Form("searchText")) != "undefined" && String(Request.Form("searchText")) != "") { rsCatalog__MMColParam = String(Request.Form("searchText"));}%><%var rsCatalog__MMColParam = "%";if (String(Request.Form("searchText")) != "undefined" && String(Request.Form("searchText")) != "") { rsCatalog__MMColParam = String(Request.Form("searchText"));}%><%var rsCatalog_cmd = Server.CreateObject ("ADODB.Command");rsCatalog_cmd.ActiveConnection = MM_Products_STRING;rsCatalog_cmd.CommandText = "SELECT [Application], [Section], [Part Number], [Description], [Part Code], [Revision], [Hyperlink] FROM Catalog WHERE [Part Code] LIKE ? OR [Part Number] LIKE ? OR [Section] LIKE ? OR [Application] LIKE ? ORDER BY [Application], [Section] ASC";rsCatalog_cmd.Prepared = true;rsCatalog_cmd.Parameters.Append(rsCatalog_cmd.CreateParameter("param1", 200, 1, 50, "%" + rsCatalog__MMColParam + "%")); // adVarCharrsCatalog_cmd.Parameters.Append(rsCatalog_cmd.CreateParameter("param1", 200, 1, 50, "%" + rsCatalog__MMColParam + "%")); // adVarCharrsCatalog_cmd.Parameters.Append(rsCatalog_cmd.CreateParameter("param1", 200, 1, 50, "%" + rsCatalog__MMColParam + "%")); // adVarCharrsCatalog_cmd.Parameters.Append(rsCatalog_cmd.CreateParameter("param1", 200, 1, 50, "%" + rsCatalog__MMColParam + "%")); // adVarCharvar rsCatalog = rsCatalog_cmd.Execute();var rsCatalog_numRows = 0;%><%var Repeat1__numRows = 10;var Repeat1__index = 0;rsCatalog_numRows += Repeat1__numRows;%><%// *** Recordset Stats, Move To Record, and Go To Record: declare stats variables// set the record countvar rsCatalog_total = rsCatalog.RecordCount;// set the number of rows displayed on this pageif (rsCatalog_numRows < 0) { // if repeat region set to all records rsCatalog_numRows = rsCatalog_total;} else if (rsCatalog_numRows == 0) { // if no repeat regions rsCatalog_numRows = 1;}// set the first and last displayed recordvar rsCatalog_first = 1;var rsCatalog_last = rsCatalog_first + rsCatalog_numRows - 1;// if we have the correct record count, check the other statsif (rsCatalog_total != -1) { rsCatalog_numRows = Math.min(rsCatalog_numRows, rsCatalog_total); rsCatalog_first = Math.min(rsCatalog_first, rsCatalog_total); rsCatalog_last = Math.min(rsCatalog_last, rsCatalog_total);}%><%// *** Recordset Stats: if we don't know the record count, manually count themif (rsCatalog_total == -1) { // count the total records by iterating through the recordset for (rsCatalog_total=0; !rsCatalog.EOF; rsCatalog.MoveNext()) { rsCatalog_total++; } // reset the cursor to the beginning if (rsCatalog.CursorType > 0) { if (!rsCatalog.BOF) rsCatalog.MoveFirst(); } else { rsCatalog.Requery(); } // set the number of rows displayed on this page if (rsCatalog_numRows < 0 || rsCatalog_numRows > rsCatalog_total) { rsCatalog_numRows = rsCatalog_total; } // set the first and last displayed record rsCatalog_first = MM_offset + 1; rsCatalog_last = MM_offset + MM_size; rsCatalog_last = Math.min(rsCatalog_first + rsCatalog_numRows - 1, rsCatalog_total); rsCatalog_first = Math.min(rsCatalog_first, rsCatalog_total);}%><% var MM_paramName = ""; %><%// *** Move To Record and Go To Record: declare variablesvar MM_rs = rsCatalog;var MM_rsCount = rsCatalog_total;var MM_size = rsCatalog_numRows;var MM_uniqueCol = ""; MM_paramName = "";var MM_offset = 0;var MM_atTotal = false;var MM_paramIsDefined = (MM_paramName != "" && String(Request(MM_paramName)) != "undefined");%><%// *** Move To Record: handle 'index' or 'offset' parameterif (!MM_paramIsDefined && MM_rsCount != 0) { // use index parameter if defined, otherwise use offset parameter r = String(Request("index")); if (r == "undefined") r = String(Request("offset")); if (r && r != "undefined") MM_offset = parseInt(r); // if we have a record count, check if we are past the end of the recordset if (MM_rsCount != -1) { if (MM_offset >= MM_rsCount || MM_offset == -1) { // past end or move last if ((MM_rsCount % MM_size) != 0) { // last page not a full repeat region MM_offset = MM_rsCount - (MM_rsCount % MM_size); } else { MM_offset = MM_rsCount - MM_size; } } } // move the cursor to the selected record for (var i=0; !MM_rs.EOF && (i < MM_offset || MM_offset == -1); i++) { MM_rs.MoveNext(); } if (MM_rs.EOF) MM_offset = i; // set MM_offset to the last possible record}%><%// *** Move To Record: if we dont know the record count, check the display rangeif (MM_rsCount == -1) { // walk to the end of the display range for this page for (var i=MM_offset; !MM_rs.EOF && (MM_size < 0 || i < MM_offset + MM_size); i++) { MM_rs.MoveNext(); } // if we walked off the end of the recordset, set MM_rsCount and MM_size if (MM_rs.EOF) { MM_rsCount = i; if (MM_size < 0 || MM_size > MM_rsCount) MM_size = MM_rsCount; } // if we walked off the end, set the offset based on page size if (MM_rs.EOF && !MM_paramIsDefined) { if ((MM_rsCount % MM_size) != 0) { // last page not a full repeat region MM_offset = MM_rsCount - (MM_rsCount % MM_size); } else { MM_offset = MM_rsCount - MM_size; } } // reset the cursor to the beginning if (MM_rs.CursorType > 0) { if (!MM_rs.BOF) MM_rs.MoveFirst(); } else { MM_rs.Requery(); } // move the cursor to the selected record for (var i=0; !MM_rs.EOF && i < MM_offset; i++) { MM_rs.MoveNext(); }}%><%// *** Move To Record: update recordset stats// set the first and last displayed recordrsCatalog_first = MM_offset + 1;rsCatalog_last = MM_offset + MM_size;if (MM_rsCount != -1) { rsCatalog_first = Math.min(rsCatalog_first, MM_rsCount); rsCatalog_last = Math.min(rsCatalog_last, MM_rsCount);}// set the boolean used by hide region to check if we are on the last recordMM_atTotal = (MM_rsCount != -1 && MM_offset + MM_size >= MM_rsCount);%><%// create the list of parameters which should not be maintainedvar MM_removeList = "&index=";if (MM_paramName != "") MM_removeList += "&" + MM_paramName.toLowerCase() + "=";var MM_keepURL="",MM_keepForm="",MM_keepBoth="",MM_keepNone="";// add the URL parameters to the MM_keepURL stringfor (var items=new Enumerator(Request.QueryString); !items.atEnd(); items.moveNext()) { var nextItem = "&" + items.item().toLowerCase() + "="; if (MM_removeList.indexOf(nextItem) == -1) { MM_keepURL += "&" + items.item() + "=" + Server.URLencode(Request.QueryString(items.item())); }}// add the Form variables to the MM_keepForm stringfor (var items=new Enumerator(Request.Form); !items.atEnd(); items.moveNext()) { var nextItem = "&" + items.item().toLowerCase() + "="; if (MM_removeList.indexOf(nextItem) == -1) { MM_keepForm += "&" + items.item() + "=" + Server.URLencode(Request.Form(items.item())); }}// create the Form + URL string and remove the intial '&' from each of the stringsMM_keepBoth = MM_keepURL + MM_keepForm;if (MM_keepBoth.length > 0) MM_keepBoth = MM_keepBoth.substring(1);if (MM_keepURL.length > 0) MM_keepURL = MM_keepURL.substring(1);if (MM_keepForm.length > 0) MM_keepForm = MM_keepForm.substring(1);%><%// *** Move To Record: set the strings for the first, last, next, and previous linksvar MM_moveFirst="",MM_moveLast="",MM_moveNext="",MM_movePrev="";var MM_keepMove = MM_keepBoth; // keep both Form and URL parameters for movesvar MM_moveParam = "index";// if the page has a repeated region, remove 'offset' from the maintained parametersif (MM_size > 1) { MM_moveParam = "offset"; if (MM_keepMove.length > 0) { params = MM_keepMove.split("&"); MM_keepMove = ""; for (var i=0; i < params.length; i++) { var nextItem = params[i].substring(0,params[i].indexOf("=")); if (nextItem.toLowerCase() != MM_moveParam) { MM_keepMove += "&" + params[i]; } } if (MM_keepMove.length > 0) MM_keepMove = MM_keepMove.substring(1); }}// set the strings for the move to linksif (MM_keepMove.length > 0) MM_keepMove = Server.HTMLEncode(MM_keepMove) + "&";var urlStr = Request.ServerVariables("URL") + "?" + MM_keepMove + MM_moveParam + "=";MM_moveFirst = urlStr + "0";MM_moveLast = urlStr + "-1";MM_moveNext = urlStr + Math.max(MM_offset + MM_size,0);MM_movePrev = urlStr + Math.max(MM_offset - MM_size,0);%>