Forums

This topic is locked

filtering a recordset by a recordset

Posted 16 May 2007 03:50:18
1
has voted
16 May 2007 03:50:18 carl bertrand posted:
Hi there, I am using ASP Javascript (not VB) and i want one field of recordset2 to be a repeat region , but i want it controlled by field "city" from recordset1 to be equal to field "cityad" from recordset2 to display field "ads" from recordset2 as a repeat region.

here is the code i am using

it does not work.
please help!!!!!!

<%@LANGUAGE="JAVASCRIPT" CODEPAGE="1252"%>
<!--#include file="Connections/ontario.asp" -->
<%
var PC__MMColParam = "1";
if (String(Request.QueryString("postalcode") != "undefined" &&
String(Request.QueryString("postalcode") != "" {
PC__MMColParam = String(Request.QueryString("postalcode");
}
%>
<%
var PC = Server.CreateObject("ADODB.Recordset";
PC.ActiveConnection = MM_ontario_STRING;
PC.Source = "SELECT * FROM AlbertaListings WHERE postalcode LIKE '"+ PC__MMColParam.replace(/'/g, "''" + "%' ORDER BY Rnd ()";
PC.CursorType = 0;
PC.CursorLocation = 2;
PC.LockType = 1;
PC.Open();
var PC_numRows = 0;
%>

<%
var Ads__MMColParam = "1";
if (String(Request.QueryString("postalcode") != "undefined" &&
String(Request.QueryString("postalcode") != "" {
Ads__MMColParam = String(Request.QueryString("postalcode");
}
%>
<%
var Ads__varcity = "1";
if (String(PC("city" = Ads("cityad") != "undefined" &&
String(PC("city" = Ads("cityad") != "" {
Ads__varcity = String(PC("city" = Ads("cityad");
}
%>

<%
var Ads = Server.CreateObject("ADODB.Recordset";
Ads.ActiveConnection = MM_ontario_STRING;
Ads.Source = "SELECT * FROM AlbertaAds, AlbertaListings WHERE postalcode LIKE '"+ Ads__MMColParam.replace(/'/g, "''" + "%' AND cityad LIKE '%"+ Ads__varcity.replace(/'/g, "''" + "%'";
Ads.CursorType = 0;
Ads.CursorLocation = 2;
Ads.LockType = 1;
Ads.Open();
var Ads_numRows = 0;
%>

<%
var Repeat1__numRows = 10;
var Repeat1__index = 0;
PC_numRows += Repeat1__numRows;
%>
<%
var Repeat2__numRows = 10;
var Repeat2__index = 0;
Ads_numRows += Repeat2__numRows;
%>
<%
// *** Recordset Stats, Move To Record, and Go To Record: declare stats variables

// set the record count
var PC_total = PC.RecordCount;

// set the number of rows displayed on this page
if (PC_numRows < 0) { // if repeat region set to all records
PC_numRows = PC_total;
} else if (PC_numRows == 0) { // if no repeat regions
PC_numRows = 1;
}

// set the first and last displayed record
var PC_first = 1;
var PC_last = PC_first + PC_numRows - 1;

// if we have the correct record count, check the other stats
if (PC_total != -1) {
PC_numRows = Math.min(PC_numRows, PC_total);
PC_first = Math.min(PC_first, PC_total);
PC_last = Math.min(PC_last, PC_total);
}
%>
<%
// *** Recordset Stats: if we don't know the record count, manually count them

if (PC_total == -1) {

// count the total records by iterating through the recordset
for (PC_total=0; !PC.EOF; PC.MoveNext()) {
PC_total++;
}

// reset the cursor to the beginning
if (PC.CursorType > 0) {
if (!PC.BOF) PC.MoveFirst();
} else {
PC.Requery();
}

// set the number of rows displayed on this page
if (PC_numRows < 0 || PC_numRows > PC_total) {
PC_numRows = PC_total;
}

// set the first and last displayed record
PC_last = Math.min(PC_first + PC_numRows - 1, PC_total);
PC_first = Math.min(PC_first, PC_total);
}
%>

<% var MM_paramName = ""; %>
<%
// *** Move To Record and Go To Record: declare variables

var MM_rs = PC;
var MM_rsCount = PC_total;
var MM_size = PC_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' parameter

if (!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 range

if (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 record
PC_first = MM_offset + 1;
PC_last = MM_offset + MM_size;
if (MM_rsCount != -1) {
PC_first = Math.min(PC_first, MM_rsCount);
PC_last = Math.min(PC_last, MM_rsCount);
}

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

// create the list of parameters which should not be maintained
var 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 string
for (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 string
for (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 strings
MM_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 links

var MM_moveFirst="",MM_moveLast="",MM_moveNext="",MM_movePrev="";
var MM_keepMove = MM_keepBoth; // keep both Form and URL parameters for moves
var MM_moveParam = "index";

// if the page has a repeated region, remove 'offset' from the maintained parameters
if (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 links
if (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 + (MM_offset + MM_size);
MM_movePrev = urlStr + Math.max(MM_offset - MM_size,0);
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link rel="shortcut icon" href="images/CMicon.ico">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<th width="140" rowspan="2" valign="top" style="border-left-style: none; border-left-width: medium; border-top-style: none; border-top-width: medium" scope="row">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>cityad</td>
<td>ads</td>
</tr>
<% while ((Repeat2__numRows-- != 0) && (!Ads.EOF)) { %>
<tr>
<td></td>
<td> <%=(Ads.Fields.Item("ads".Value)%></td></tr>
<%
Repeat2__index++;
Ads.MoveNext();
}
%>

Replies

Replied 18 May 2007 10:04:40
18 May 2007 10:04:40 Joshu4rnold Joshu4rnold replied:
take it easy, although i 've no idea where is the mistake, some guys in the forum must can help you, just waiting...

____________________________________
Free Software Download
www.populardownload.net/

Free Software Download
Replied 27 May 2007 04:44:26
27 May 2007 04:44:26 Melissa Ferris replied:
You will probably need to perform a join, kinda like this

SELECT *
FROM Table1, Table2
WHERE Table1.matchingrecordset1 = Table2.matchingrecordset2

The only problem with that is that you can't sort that way, if you sort then you will have to actually listed out the fields you want to use instead of just putting the *

Reply to this topic