Access 2000:
I have a customer-inventory table I need to loop through and compile a list
of all the inventory items the customer is tracking. The problem I am
finding is that a simple loop will pull out the customer details each time
their is an inventory item listed....I need to get the customer out ONCE and
list his items....is there an elegant way to do this:
Here is the table:
Cust-Invent Table
CustID InvenID
101 356
101 222
101 187
55 34
55 123
But I need to get the extract it to my ASP page like this:
101
----
356
222
187
55
---
34
123
If I simply loop the table I will repeat the customer details which I do not
want want. I just want to get the CustID and then list the inventory items
underneath (and send an email to him) and then rs.movenext to the next
record....
I really appreciate any help here...
Jason 12 2364
1. Create this saved query called qGetCustInv in your Access database:
Select CustID,InventID FROM Cust-Invent
ORDER BY CustID,InventID
2. In your asp page:
<%
dim cn, rs, ar, iRow, curCust, newCust
'open a connection using cn
set rs = server.createobject("adodb.recordset")
cn.qGetCustInv rs
if not rs.eof then ar = rs.GetRows
rs.close: set rs = nothing
cn.close: set cn = nothing
if isarray(ar) then
curCust = ar(0,0)
response.write "<table border=0>"
For iRow = 0 to ubound(ar,2)
newCust = ar(0,i)
if newCust <> curCust then
curCust = newCust
response.write "<tr><td colspan=2>"
response.write curCust
response.write "</td></tr>"
end if
response.write "<tr><td> </td><td>"
response.write ar(1,i)
response.write "</td></tr>"
next
response.write "</table>"
erase ar
else
response.write "No records"
end if
HTH,
Bob Barrows
jason wrote: Access 2000:
I have a customer-inventory table I need to loop through and compile a list of all the inventory items the customer is tracking. The problem I am finding is that a simple loop will pull out the customer details each time their is an inventory item listed....I need to get the customer out ONCE and list his items....is there an elegant way to do this:
Here is the table: Cust-Invent Table
CustID InvenID 101 356 101 222 101 187 55 34 55 123
But I need to get the extract it to my ASP page like this:
101 ---- 356 222 187
55 --- 34 123
If I simply loop the table I will repeat the customer details which I do not want want. I just want to get the CustID and then list the inventory items underneath (and send an email to him) and then rs.movenext to the next record....
I really appreciate any help here... Jason
Hey Bob...this does not appear to solve the problem.....when I run your
script for my query I get the following and only the following for the first
customer in the query:
101 (hidden)
356
356
356
Thus, it appears to be finding the first customer record and listing the
yacht attached to that customer 3 times (matching the record count for all
the records in my table). It ignores the 2 other customer records and their
yacht inventory items.
I followed your general instructions for my existing query which is slightly
more complex but nevertheless should work:
PARAMETERS CID Long;
SELECT tblCustomer.CustomerID, tblPageWatch.ListingsID AS ListingsID,
qry_ListingsPriceChanges.NewPrice, qry_ListingsPriceChanges.Original_Price,
qry_ListingsPriceChanges.Name, qry_ListingsPriceChanges.tblCompany.Company,
qry_ListingsPriceChanges.Model, qry_ListingsPriceChanges.Size_ID,
qry_ListingsPriceChanges.Hull_Number, qry_ListingsPriceChanges.Year,
qry_ListingsPriceChanges.Location_Status,
qry_ListingsPriceChanges.Yacht_Type, qry_ListingsPriceChanges.Market_Status,
qry_ListingsPriceChanges.Charter_Status,
qry_ListingsPriceChanges.Broker_Name, qry_ListingsPriceChanges.Broker_Email,
tblCustomer.first_name, tblCustomer.last_name, tblCustomer.email_address,
qry_ListingsPriceChanges.Condition, qry_ListingsPriceChanges.Insertion_Date
FROM tblCustomer INNER JOIN (qry_ListingsPriceChanges INNER JOIN
tblPageWatch ON qry_ListingsPriceChanges.tblListings.ListingsID =
tblPageWatch.ListingsID) ON tblCustomer.CustomerID = tblPageWatch.CustomerID
WHERE ((([CID]) Is Null)) OR (((tblCustomer.CustomerID)=[CID]))
ORDER BY tblCustomer.CustomerID, tblPageWatch.ListingsID ;
What am I doing wrong?
Many thanks
Jason
"Bob Barrows" <re******@NOyahoo.SPAMcom> wrote in message
news:OI**************@TK2MSFTNGP09.phx.gbl... 1. Create this saved query called qGetCustInv in your Access database: Select CustID,InventID FROM Cust-Invent ORDER BY CustID,InventID
2. In your asp page: <% dim cn, rs, ar, iRow, curCust, newCust 'open a connection using cn set rs = server.createobject("adodb.recordset") cn.qGetCustInv rs if not rs.eof then ar = rs.GetRows rs.close: set rs = nothing cn.close: set cn = nothing if isarray(ar) then curCust = ar(0,0) response.write "<table border=0>" For iRow = 0 to ubound(ar,2) newCust = ar(0,i) if newCust <> curCust then curCust = newCust response.write "<tr><td colspan=2>" response.write curCust response.write "</td></tr>" end if response.write "<tr><td> </td><td>" response.write ar(1,i) response.write "</td></tr>" next response.write "</table>" erase ar else response.write "No records" end if
HTH, Bob Barrows
jason wrote: Access 2000:
I have a customer-inventory table I need to loop through and compile a list of all the inventory items the customer is tracking. The problem I am finding is that a simple loop will pull out the customer details each time their is an inventory item listed....I need to get the customer out ONCE and list his items....is there an elegant way to do this:
Here is the table: Cust-Invent Table
CustID InvenID 101 356 101 222 101 187 55 34 55 123
But I need to get the extract it to my ASP page like this:
101 ---- 356 222 187
55 --- 34 123
If I simply loop the table I will repeat the customer details which I do not want want. I just want to get the CustID and then list the inventory items underneath (and send an email to him) and then rs.movenext to the next record....
I really appreciate any help here... Jason
I would use this as a reference
( http://aspfaq.com/show.asp?id=2241), it does what you are
looking for but uses 2 tables opposed to 1. The key is
setting a variable to nothing, reading the first record,
comparing the variable to the first records variable, if
not matched, move new value to the variable, write out the
101 the write out the details, if it is matched, just
write out the details. I hope that helps. -----Original Message----- Hey Bob...this does not appear to solve the
problem.....when I run yourscript for my query I get the following and only the
following for the firstcustomer in the query:
101 (hidden)
356 356 356
Thus, it appears to be finding the first customer record
and listing theyacht attached to that customer 3 times (matching the
record count for allthe records in my table). It ignores the 2 other customer
records and theiryacht inventory items.
I followed your general instructions for my existing
query which is slightlymore complex but nevertheless should work:
PARAMETERS CID Long; SELECT tblCustomer.CustomerID, tblPageWatch.ListingsID AS
ListingsID,qry_ListingsPriceChanges.NewPrice,
qry_ListingsPriceChanges.Original_Price,qry_ListingsPriceChanges.Name,
qry_ListingsPriceChanges.tblCompany.Company,qry_ListingsPriceChanges.Model,
qry_ListingsPriceChanges.Size_ID,qry_ListingsPriceChanges.Hull_Number,
qry_ListingsPriceChanges.Year,qry_ListingsPriceChanges.Location_Status, qry_ListingsPriceChanges.Yacht_Type,
qry_ListingsPriceChanges.Market_Status,qry_ListingsPriceChanges.Charter_Status, qry_ListingsPriceChanges.Broker_Name,
qry_ListingsPriceChanges.Broker_Email,tblCustomer.first_name, tblCustomer.last_name,
tblCustomer.email_address,qry_ListingsPriceChanges.Condition,
qry_ListingsPriceChanges.Insertion_DateFROM tblCustomer INNER JOIN (qry_ListingsPriceChanges
INNER JOINtblPageWatch ON
qry_ListingsPriceChanges.tblListings.ListingsID =tblPageWatch.ListingsID) ON tblCustomer.CustomerID =
tblPageWatch.CustomerIDWHERE ((([CID]) Is Null)) OR (((tblCustomer.CustomerID)=
[CID]))ORDER BY tblCustomer.CustomerID, tblPageWatch.ListingsID ;
What am I doing wrong?
Many thanks Jason
"Bob Barrows" <re******@NOyahoo.SPAMcom> wrote in message news:OI**************@TK2MSFTNGP09.phx.gbl... 1. Create this saved query called qGetCustInv in your
Access database: Select CustID,InventID FROM Cust-Invent ORDER BY CustID,InventID
2. In your asp page: <% dim cn, rs, ar, iRow, curCust, newCust 'open a connection using cn set rs = server.createobject("adodb.recordset") cn.qGetCustInv rs if not rs.eof then ar = rs.GetRows rs.close: set rs = nothing cn.close: set cn = nothing if isarray(ar) then curCust = ar(0,0) response.write "<table border=0>" For iRow = 0 to ubound(ar,2) newCust = ar(0,i) if newCust <> curCust then curCust = newCust response.write "<tr><td colspan=2>" response.write curCust response.write "</td></tr>" end if response.write "<tr><td> </td><td>" response.write ar(1,i) response.write "</td></tr>" next response.write "</table>" erase ar else response.write "No records" end if
HTH, Bob Barrows
jason wrote: > Access 2000: > > I have a customer-inventory table I need to loop
through and compile > a list of all the inventory items the customer is
tracking. The > problem I am finding is that a simple loop will pull
out the customer > details each time their is an inventory item
listed....I need to get > the customer out ONCE and list his items....is there
an elegant way > to do this: > > Here is the table: > Cust-Invent Table > > CustID InvenID > 101 356 > 101 222 > 101 187 > 55 34 > 55 123 > > > But I need to get the extract it to my ASP page like
this: > > 101 > ---- > 356 > 222 > 187 > > 55 > --- > 34 > 123 > > If I simply loop the table I will repeat the customer
details which I > do not want want. I just want to get the CustID and
then list the > inventory items underneath (and send an email to him)
and then > rs.movenext to the next record.... > > I really appreciate any help here... > Jason
.
Thanks - but this is not helping.... I have already optimized my structure
by employing a complex join in the jet engine...... I am not really sure
how to re-adapt my db and asp code to fit that model...
I mean, I have the damn Cust ID and Inventory ID already in my query...there
has just got to be a way to make sure the Customer ID (and related customer
info fields in query) show up ONCE with multiple inventory items listed....
Can someone help me get my head around this...Bobs suggestion seems to fall
short....I cannot pinpoint where the script if flawed as I am no array
expert. It appears that If I take this section and place it outside the For
Loop I end up with one inventory item as oppossed to 3 repeats:
response.write "<tr><td> </td><td>"
response.write ar(1,i) & " + " & ar(4,i)
response.write "</td></tr>"
response.write "</table>"
But, I am at a loss as to how to get the script to loop for the individual
customer and show just the boats related to him. Full code:
dim cnn, rs, ar, iRow, curCust, newCust
cnn.Open strCon
'//------------------------------ PAGEWATCH
SQL -------------------------------
SQL="EXEC [qry_PageWatch+PriceChanges] @CID=NULL,@LID=NULL" '//This
'//-------------------------------------------------------------------------
-
set rs = cnn.execute(SQL) '//This
'open a connection using cn
'set rs = server.createobject("adodb.recordset")
'cnn.qGetCustInv rs
if not rs.eof then ar = rs.GetRows
rs.close: set rs = nothing
cnn.close: set cn = nothing
if isarray(ar) then
curCust = ar(0,0)
Response.Write curCust
response.write "<table border=0>"
' b=0
For iRow = 0 to ubound(ar,2)
' b=b+1
'Response.Write b
newCust = ar(0,i)
if newCust <> curCust then
curCust = newCust
response.write "<tr><td colspan=2>"
response.write curCust & "hi"
response.write "</td></tr>"
end if
'//Response.Write "hi"
next
response.write "<tr><td> </td><td>"
response.write ar(1,i) & " + " & ar(4,i)
response.write "</td></tr>"
response.write "</table>"
erase ar
else
response.write "No records"
end if
"Me" <no**@none.com> wrote in message
news:27*****************************@phx.gbl... I would use this as a reference (http://aspfaq.com/show.asp?id=2241), it does what you are looking for but uses 2 tables opposed to 1. The key is setting a variable to nothing, reading the first record, comparing the variable to the first records variable, if not matched, move new value to the variable, write out the 101 the write out the details, if it is matched, just write out the details. I hope that helps.
-----Original Message----- Hey Bob...this does not appear to solve the problem.....when I run yourscript for my query I get the following and only the following for the firstcustomer in the query:
101 (hidden)
356 356 356
Thus, it appears to be finding the first customer record and listing theyacht attached to that customer 3 times (matching the record count for allthe records in my table). It ignores the 2 other customer records and theiryacht inventory items.
I followed your general instructions for my existing query which is slightlymore complex but nevertheless should work:
PARAMETERS CID Long; SELECT tblCustomer.CustomerID, tblPageWatch.ListingsID AS ListingsID,qry_ListingsPriceChanges.NewPrice, qry_ListingsPriceChanges.Original_Price,qry_ListingsPriceChanges.Name, qry_ListingsPriceChanges.tblCompany.Company,qry_ListingsPriceChanges.Model, qry_ListingsPriceChanges.Size_ID,qry_ListingsPriceChanges.Hull_Number, qry_ListingsPriceChanges.Year,qry_ListingsPriceChanges.Location_Status, qry_ListingsPriceChanges.Yacht_Type, qry_ListingsPriceChanges.Market_Status,qry_ListingsPriceChanges.Charter_Status, qry_ListingsPriceChanges.Broker_Name, qry_ListingsPriceChanges.Broker_Email,tblCustomer.first_name, tblCustomer.last_name, tblCustomer.email_address,qry_ListingsPriceChanges.Condition, qry_ListingsPriceChanges.Insertion_DateFROM tblCustomer INNER JOIN (qry_ListingsPriceChanges INNER JOINtblPageWatch ON qry_ListingsPriceChanges.tblListings.ListingsID =tblPageWatch.ListingsID) ON tblCustomer.CustomerID = tblPageWatch.CustomerIDWHERE ((([CID]) Is Null)) OR (((tblCustomer.CustomerID)= [CID]))ORDER BY tblCustomer.CustomerID, tblPageWatch.ListingsID ;
What am I doing wrong?
Many thanks Jason
"Bob Barrows" <re******@NOyahoo.SPAMcom> wrote in message news:OI**************@TK2MSFTNGP09.phx.gbl... 1. Create this saved query called qGetCustInv in your Access database: Select CustID,InventID FROM Cust-Invent ORDER BY CustID,InventID
2. In your asp page: <% dim cn, rs, ar, iRow, curCust, newCust 'open a connection using cn set rs = server.createobject("adodb.recordset") cn.qGetCustInv rs if not rs.eof then ar = rs.GetRows rs.close: set rs = nothing cn.close: set cn = nothing if isarray(ar) then curCust = ar(0,0) response.write "<table border=0>" For iRow = 0 to ubound(ar,2) newCust = ar(0,i) if newCust <> curCust then curCust = newCust response.write "<tr><td colspan=2>" response.write curCust response.write "</td></tr>" end if response.write "<tr><td> </td><td>" response.write ar(1,i) response.write "</td></tr>" next response.write "</table>" erase ar else response.write "No records" end if
HTH, Bob Barrows
jason wrote: > Access 2000: > > I have a customer-inventory table I need to loop through and compile > a list of all the inventory items the customer is tracking. The > problem I am finding is that a simple loop will pull out the customer > details each time their is an inventory item listed....I need to get > the customer out ONCE and list his items....is there an elegant way > to do this: > > Here is the table: > Cust-Invent Table > > CustID InvenID > 101 356 > 101 222 > 101 187 > 55 34 > 55 123 > > > But I need to get the extract it to my ASP page like this: > > 101 > ---- > 356 > 222 > 187 > > 55 > --- > 34 > 123 > > If I simply loop the table I will repeat the customer details which I > do not want want. I just want to get the CustID and then list the > inventory items underneath (and send an email to him) and then > rs.movenext to the next record.... > > I really appreciate any help here... > Jason
.
See below for error correction:
Bob Barrows wrote: 1. Create this saved query called qGetCustInv in your Access database: Select CustID,InventID FROM Cust-Invent ORDER BY CustID,InventID
2. In your asp page: <% dim cn, rs, ar, iRow, curCust, newCust 'open a connection using cn set rs = server.createobject("adodb.recordset") cn.qGetCustInv rs if not rs.eof then ar = rs.GetRows rs.close: set rs = nothing cn.close: set cn = nothing if isarray(ar) then curCust = ar(0,0) response.write "<table border=0>"
response.write "<tr><td colspan=2>"
response.write curCust
response.write "</td></tr>" For iRow = 0 to ubound(ar,2) newCust = ar(0,i) if newCust <> curCust then curCust = newCust response.write "<tr><td colspan=2>" response.write curCust response.write "</td></tr>" end if response.write "<tr><td> </td><td>" response.write ar(1,i) response.write "</td></tr>" next response.write "</table>" erase ar else response.write "No records" end if
HTH, Bob Barrows
jason wrote: Access 2000:
I have a customer-inventory table I need to loop through and compile a list of all the inventory items the customer is tracking. The problem I am finding is that a simple loop will pull out the customer details each time their is an inventory item listed....I need to get the customer out ONCE and list his items....is there an elegant way to do this:
Here is the table: Cust-Invent Table
CustID InvenID 101 356 101 222 101 187 55 34 55 123
But I need to get the extract it to my ASP page like this:
101 ---- 356 222 187
55 --- 34 123
If I simply loop the table I will repeat the customer details which I do not want want. I just want to get the CustID and then list the inventory items underneath (and send an email to him) and then rs.movenext to the next record....
I really appreciate any help here... Jason
Hi Bob - did you post it below....I cannot see your changes?
Thanks - Jason
"Bob Barrows" <re******@NOyahoo.SPAMcom> wrote in message
news:ek**************@TK2MSFTNGP11.phx.gbl... See below for error correction: Bob Barrows wrote: 1. Create this saved query called qGetCustInv in your Access database: Select CustID,InventID FROM Cust-Invent ORDER BY CustID,InventID
2. In your asp page: <% dim cn, rs, ar, iRow, curCust, newCust 'open a connection using cn set rs = server.createobject("adodb.recordset") cn.qGetCustInv rs if not rs.eof then ar = rs.GetRows rs.close: set rs = nothing cn.close: set cn = nothing if isarray(ar) then curCust = ar(0,0) response.write "<table border=0>" response.write "<tr><td colspan=2>" response.write curCust response.write "</td></tr>" For iRow = 0 to ubound(ar,2) newCust = ar(0,i) if newCust <> curCust then curCust = newCust response.write "<tr><td colspan=2>" response.write curCust response.write "</td></tr>" end if response.write "<tr><td> </td><td>" response.write ar(1,i) response.write "</td></tr>" next response.write "</table>" erase ar else response.write "No records" end if
HTH, Bob Barrows
jason wrote: Access 2000:
I have a customer-inventory table I need to loop through and compile a list of all the inventory items the customer is tracking. The problem I am finding is that a simple loop will pull out the customer details each time their is an inventory item listed....I need to get the customer out ONCE and list his items....is there an elegant way to do this:
Here is the table: Cust-Invent Table
CustID InvenID 101 356 101 222 101 187 55 34 55 123
But I need to get the extract it to my ASP page like this:
101 ---- 356 222 187
55 --- 34 123
If I simply loop the table I will repeat the customer details which I do not want want. I just want to get the CustID and then list the inventory items underneath (and send an email to him) and then rs.movenext to the next record....
I really appreciate any help here... Jason
It's inline. Here: I'll mark it better:
jason wrote: Hi Bob - did you post it below....I cannot see your changes?
Thanks - Jason "Bob Barrows" <re******@NOyahoo.SPAMcom> wrote in message news:ek**************@TK2MSFTNGP11.phx.gbl... See below for error correction: Bob Barrows wrote: 1. Create this saved query called qGetCustInv in your Access database: Select CustID,InventID FROM Cust-Invent ORDER BY CustID,InventID
2. In your asp page: <% dim cn, rs, ar, iRow, curCust, newCust 'open a connection using cn set rs = server.createobject("adodb.recordset") cn.qGetCustInv rs if not rs.eof then ar = rs.GetRows rs.close: set rs = nothing cn.close: set cn = nothing if isarray(ar) then curCust = ar(0,0) response.write "<table border=0>"
********************************************* response.write "<tr><td colspan=2>" response.write curCust response.write "</td></tr>"
************************************** For iRow = 0 to ubound(ar,2) newCust = ar(0,i) if newCust <> curCust then curCust = newCust response.write "<tr><td colspan=2>" response.write curCust response.write "</td></tr>" end if response.write "<tr><td> </td><td>" response.write ar(1,i) response.write "</td></tr>" next response.write "</table>" erase ar else response.write "No records" end if
HTH, Bob Barrows
jason wrote: Access 2000:
I have a customer-inventory table I need to loop through and compile a list of all the inventory items the customer is tracking. The problem I am finding is that a simple loop will pull out the customer details each time their is an inventory item listed....I need to get the customer out ONCE and list his items....is there an elegant way to do this:
Here is the table: Cust-Invent Table
CustID InvenID 101 356 101 222 101 187 55 34 55 123
But I need to get the extract it to my ASP page like this:
101 ---- 356 222 187
55 --- 34 123
If I simply loop the table I will repeat the customer details which I do not want want. I just want to get the CustID and then list the inventory items underneath (and send an email to him) and then rs.movenext to the next record....
I really appreciate any help here... Jason
Hi Bob - no go - it still only:
1. Lists one customer
2. It repeats the first inventory item for that customer the same number of
times as the record count for the customers in the table. In this case,
three times.
3. It does not show the other inventory item related to this customer. It
comes out like this:
200 (CustomerID)
215 ("CatPeople")
215 ("CatPeople")
215 ("CatPeople")
It does not show the other vessel listed for this customer: 216 ("Ballyhoo")
....And...
Its ignoring the next customer record: 201
...and its...related inventory item: 216 ("Ballyhoo")
- Jason
CODE:
dim cnn, rs, ar, iRow, curCust, newCust
cnn.Open strCon
'//------------------------------ PAGEWATCH
SQL -------------------------------
SQL="EXEC [qry_PageWatch+PriceChanges] @CID=NULL,@LID=NULL" '//This
'//-------------------------------------------------------------------------
-
'//This
'open a connection using cn
set rs = server.createobject("adodb.recordset")
set rs = cnn.execute(sql)
if not rs.eof then ar = rs.GetRows
rs.close: set rs = nothing
cnn.close: set cnn = nothing
if isarray(ar) then
curCust = ar(0,0)
response.write "<table border=0>"
'//*********************************************
response.write "<tr><td colspan=2>"
response.write curCust
response.write "</td></tr>"
'//**************************************
For iRow = 0 to ubound(ar,2)
newCust = ar(0,i)
if newCust <> curCust then
curCust = newCust
response.write "<tr><td colspan=2>"
response.write curCust
response.write "</td></tr>"
end if
response.write "<tr><td> </td><td>"
response.write ar(1,i)
response.write "</td></tr>"
next
response.write "</table>"
erase ar
else
response.write "No records"
end if
"Bob Barrows" <re******@NOyahoo.SPAMcom> wrote in message
news:eC**************@TK2MSFTNGP12.phx.gbl... It's inline. Here: I'll mark it better: jason wrote: Hi Bob - did you post it below....I cannot see your changes?
Thanks - Jason "Bob Barrows" <re******@NOyahoo.SPAMcom> wrote in message news:ek**************@TK2MSFTNGP11.phx.gbl... See below for error correction: Bob Barrows wrote: 1. Create this saved query called qGetCustInv in your Access database: Select CustID,InventID FROM Cust-Invent ORDER BY CustID,InventID
2. In your asp page: <% dim cn, rs, ar, iRow, curCust, newCust 'open a connection using cn set rs = server.createobject("adodb.recordset") cn.qGetCustInv rs if not rs.eof then ar = rs.GetRows rs.close: set rs = nothing cn.close: set cn = nothing if isarray(ar) then curCust = ar(0,0) response.write "<table border=0>" ********************************************* response.write "<tr><td colspan=2>" response.write curCust response.write "</td></tr>" ************************************** For iRow = 0 to ubound(ar,2) newCust = ar(0,i) if newCust <> curCust then curCust = newCust response.write "<tr><td colspan=2>" response.write curCust response.write "</td></tr>" end if response.write "<tr><td> </td><td>" response.write ar(1,i) response.write "</td></tr>" next response.write "</table>" erase ar else response.write "No records" end if
HTH, Bob Barrows
jason wrote: > Access 2000: > > I have a customer-inventory table I need to loop through and > compile a list of all the inventory items the customer is > tracking. The problem I am finding is that a simple loop will > pull out the customer details each time their is an inventory item > listed....I need to get the customer out ONCE and list his > items....is there an elegant way to do this: > > Here is the table: > Cust-Invent Table > > CustID InvenID > 101 356 > 101 222 > 101 187 > 55 34 > 55 123 > > > But I need to get the extract it to my ASP page like this: > > 101 > ---- > 356 > 222 > 187 > > 55 > --- > 34 > 123 > > If I simply loop the table I will repeat the customer details > which I do not want want. I just want to get the CustID and then > list the inventory items underneath (and send an email to him) and > then rs.movenext to the next record.... > > I really appreciate any help here... > Jason
Damn! Change the i's to iRow. For example
newCust = ar(0,i)
should be
newCust = ar(0,iRow)
Bob
jason wrote: Hi Bob - no go - it still only:
1. Lists one customer 2. It repeats the first inventory item for that customer the same number of times as the record count for the customers in the table. In this case, three times. 3. It does not show the other inventory item related to this customer. It comes out like this:
200 (CustomerID) 215 ("CatPeople") 215 ("CatPeople") 215 ("CatPeople")
It does not show the other vessel listed for this customer: 216 ("Ballyhoo")
...And...
Its ignoring the next customer record: 201
..and its...related inventory item: 216 ("Ballyhoo")
- Jason
CODE:
dim cnn, rs, ar, iRow, curCust, newCust cnn.Open strCon '//------------------------------ PAGEWATCH SQL ------------------------------- SQL="EXEC [qry_PageWatch+PriceChanges] @CID=NULL,@LID=NULL" '//This
'//------------------------------------------------------------------------- - '//This
'open a connection using cn set rs = server.createobject("adodb.recordset") set rs = cnn.execute(sql) if not rs.eof then ar = rs.GetRows rs.close: set rs = nothing cnn.close: set cnn = nothing if isarray(ar) then curCust = ar(0,0) response.write "<table border=0>" '//*********************************************
response.write "<tr><td colspan=2>" response.write curCust response.write "</td></tr>"
'//************************************** For iRow = 0 to ubound(ar,2) newCust = ar(0,i) if newCust <> curCust then curCust = newCust response.write "<tr><td colspan=2>" response.write curCust response.write "</td></tr>" end if response.write "<tr><td> </td><td>" response.write ar(1,i) response.write "</td></tr>" next response.write "</table>" erase ar else response.write "No records" end if
"Bob Barrows" <re******@NOyahoo.SPAMcom> wrote in message news:eC**************@TK2MSFTNGP12.phx.gbl... It's inline. Here: I'll mark it better: jason wrote: Hi Bob - did you post it below....I cannot see your changes?
Thanks - Jason "Bob Barrows" <re******@NOyahoo.SPAMcom> wrote in message news:ek**************@TK2MSFTNGP11.phx.gbl... See below for error correction: Bob Barrows wrote: > 1. Create this saved query called qGetCustInv in your Access > database: Select CustID,InventID FROM Cust-Invent > ORDER BY CustID,InventID > > 2. In your asp page: > <% > dim cn, rs, ar, iRow, curCust, newCust > 'open a connection using cn > set rs = server.createobject("adodb.recordset") > cn.qGetCustInv rs > if not rs.eof then ar = rs.GetRows > rs.close: set rs = nothing > cn.close: set cn = nothing > if isarray(ar) then > curCust = ar(0,0) > response.write "<table border=0>" > *********************************************
response.write "<tr><td colspan=2>" response.write curCust response.write "</td></tr>"
**************************************> For iRow = 0 to ubound(ar,2) > newCust = ar(0,i) > if newCust <> curCust then > curCust = newCust > response.write "<tr><td colspan=2>" > response.write curCust > response.write "</td></tr>" > end if > response.write "<tr><td> </td><td>" > response.write ar(1,i) > response.write "</td></tr>" > next > response.write "</table>" > erase ar > else > response.write "No records" > end if > > HTH, > Bob Barrows > > jason wrote: >> Access 2000: >> >> I have a customer-inventory table I need to loop through and >> compile a list of all the inventory items the customer is >> tracking. The problem I am finding is that a simple loop will >> pull out the customer details each time their is an inventory >> item listed....I need to get the customer out ONCE and list his >> items....is there an elegant way to do this: >> >> Here is the table: >> Cust-Invent Table >> >> CustID InvenID >> 101 356 >> 101 222 >> 101 187 >> 55 34 >> 55 123 >> >> >> But I need to get the extract it to my ASP page like this: >> >> 101 >> ---- >> 356 >> 222 >> 187 >> >> 55 >> --- >> 34 >> 123 >> >> If I simply loop the table I will repeat the customer details >> which I do not want want. I just want to get the CustID and then >> list the inventory items underneath (and send an email to him) >> and then rs.movenext to the next record.... >> >> I really appreciate any help here... >> Jason
Ok - that almosts works but:
1. It only seems to see the first customer
2. It still duplicates the second inventory item
200
215
216
216
....you can see216 is showing up twice while customer 201 is not being
displayed....
Regards
Jason
"Bob Barrows" <re******@NOyahoo.SPAMcom> wrote in message
news:Oc**************@TK2MSFTNGP10.phx.gbl... Damn! Change the i's to iRow. For example newCust = ar(0,i) should be newCust = ar(0,iRow)
Bob
jason wrote: Hi Bob - no go - it still only:
1. Lists one customer 2. It repeats the first inventory item for that customer the same number of times as the record count for the customers in the table. In this case, three times. 3. It does not show the other inventory item related to this customer. It comes out like this:
200 (CustomerID) 215 ("CatPeople") 215 ("CatPeople") 215 ("CatPeople")
It does not show the other vessel listed for this customer: 216 ("Ballyhoo")
...And...
Its ignoring the next customer record: 201
..and its...related inventory item: 216 ("Ballyhoo")
- Jason
CODE:
dim cnn, rs, ar, iRow, curCust, newCust cnn.Open strCon '//------------------------------ PAGEWATCH SQL ------------------------------- SQL="EXEC [qry_PageWatch+PriceChanges] @CID=NULL,@LID=NULL" '//This
'//------------------------------------------------------------------------- - '//This
'open a connection using cn set rs = server.createobject("adodb.recordset") set rs = cnn.execute(sql) if not rs.eof then ar = rs.GetRows rs.close: set rs = nothing cnn.close: set cnn = nothing if isarray(ar) then curCust = ar(0,0) response.write "<table border=0>" '//*********************************************
response.write "<tr><td colspan=2>" response.write curCust response.write "</td></tr>"
'//************************************** For iRow = 0 to ubound(ar,2) newCust = ar(0,i) if newCust <> curCust then curCust = newCust response.write "<tr><td colspan=2>" response.write curCust response.write "</td></tr>" end if response.write "<tr><td> </td><td>" response.write ar(1,i) response.write "</td></tr>" next response.write "</table>" erase ar else response.write "No records" end if
"Bob Barrows" <re******@NOyahoo.SPAMcom> wrote in message news:eC**************@TK2MSFTNGP12.phx.gbl... It's inline. Here: I'll mark it better: jason wrote: Hi Bob - did you post it below....I cannot see your changes?
Thanks - Jason "Bob Barrows" <re******@NOyahoo.SPAMcom> wrote in message news:ek**************@TK2MSFTNGP11.phx.gbl... > See below for error correction: > Bob Barrows wrote: >> 1. Create this saved query called qGetCustInv in your Access >> database: Select CustID,InventID FROM Cust-Invent >> ORDER BY CustID,InventID >> >> 2. In your asp page: >> <% >> dim cn, rs, ar, iRow, curCust, newCust >> 'open a connection using cn >> set rs = server.createobject("adodb.recordset") >> cn.qGetCustInv rs >> if not rs.eof then ar = rs.GetRows >> rs.close: set rs = nothing >> cn.close: set cn = nothing >> if isarray(ar) then >> curCust = ar(0,0) >> response.write "<table border=0>" >> *********************************************
> response.write "<tr><td colspan=2>" > response.write curCust > response.write "</td></tr>"
************************************** >> For iRow = 0 to ubound(ar,2) >> newCust = ar(0,i) >> if newCust <> curCust then >> curCust = newCust >> response.write "<tr><td colspan=2>" >> response.write curCust >> response.write "</td></tr>" >> end if >> response.write "<tr><td> </td><td>" >> response.write ar(1,i) >> response.write "</td></tr>" >> next >> response.write "</table>" >> erase ar >> else >> response.write "No records" >> end if >> >> HTH, >> Bob Barrows >> >> jason wrote: >>> Access 2000: >>> >>> I have a customer-inventory table I need to loop through and >>> compile a list of all the inventory items the customer is >>> tracking. The problem I am finding is that a simple loop will >>> pull out the customer details each time their is an inventory >>> item listed....I need to get the customer out ONCE and list his >>> items....is there an elegant way to do this: >>> >>> Here is the table: >>> Cust-Invent Table >>> >>> CustID InvenID >>> 101 356 >>> 101 222 >>> 101 187 >>> 55 34 >>> 55 123 >>> >>> >>> But I need to get the extract it to my ASP page like this: >>> >>> 101 >>> ---- >>> 356 >>> 222 >>> 187 >>> >>> 55 >>> --- >>> 34 >>> 123 >>> >>> If I simply loop the table I will repeat the customer details >>> which I do not want want. I just want to get the CustID and then >>> list the inventory items underneath (and send an email to him) >>> and then rs.movenext to the next record.... >>> >>> I really appreciate any help here... >>> Jason
Did you replace the i in both cases? The code works fine for me (I tested it
this time). Here it is again:
<%
'this is the tested version
dim cn, rs, ar, iRow, curCust, newCust
'open a connection using cn
set cn=server.CreateObject("adodb.connection")
cn.Open "provider=microsoft.jet.oledb.4.0;" & _
"data source=" & Server.MapPath("dbfiles/db15.mdb")
set rs = server.createobject("adodb.recordset")
cn.qGetCustInv rs
if not rs.eof then ar = rs.GetRows
rs.close: set rs = nothing
cn.close: set cn = nothing
if isarray(ar) then
curCust = ar(0,0)
response.write "<table border=1>"
response.write "<tr><td colspan=2>"
response.write curCust
response.write "</td></tr>"
For iRow = 0 to ubound(ar,2)
newCust = ar(0,iRow)
if newCust <> curCust then
curCust = newCust
response.write "<tr><td colspan=2>"
response.write curCust
response.write "</td></tr>"
end if
response.write "<tr><td> </td><td>"
response.write ar(1,iRow)
response.write "</td></tr>"
next
response.write "</table>"
erase ar
else
response.write "No records"
end if
%>
Allriiiiiiight! That works like a bomb - I guess it the iRows did it....
Many thanks Bob for your help....
I am going to try and see if I can pass these values to an outgoing email on
the fly to each customer....maybe I could pick your brains laters in this
same thread?
Regards
Jason
"Bob Barrows" <re******@NOyahoo.SPAMcom> wrote in message
news:ez**************@TK2MSFTNGP11.phx.gbl... Did you replace the i in both cases? The code works fine for me (I tested
it this time). Here it is again: <% 'this is the tested version dim cn, rs, ar, iRow, curCust, newCust 'open a connection using cn set cn=server.CreateObject("adodb.connection") cn.Open "provider=microsoft.jet.oledb.4.0;" & _ "data source=" & Server.MapPath("dbfiles/db15.mdb") set rs = server.createobject("adodb.recordset") cn.qGetCustInv rs if not rs.eof then ar = rs.GetRows rs.close: set rs = nothing cn.close: set cn = nothing if isarray(ar) then curCust = ar(0,0) response.write "<table border=1>" response.write "<tr><td colspan=2>" response.write curCust response.write "</td></tr>" For iRow = 0 to ubound(ar,2) newCust = ar(0,iRow) if newCust <> curCust then curCust = newCust response.write "<tr><td colspan=2>" response.write curCust response.write "</td></tr>" end if response.write "<tr><td> </td><td>" response.write ar(1,iRow) response.write "</td></tr>" next response.write "</table>" erase ar else response.write "No records" end if
%>
This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Charles Alexander |
last post by:
Hello
I am new to php & MySQL - I am trying to retrieve some records from a MySQL
table and redisplay them. The data in list form looks like this:
Sample_ID Marker_ID Variation
...
|
by: Anand Pillai |
last post by:
This is for folks who are familiar with asynchronous event handling in
Python using the asyncore module.
If you have ever used the asyncore module, you will realize that it's
event loop does not...
|
by: Gremlin |
last post by:
If you are not familiar with the halting problem, I will not go into
it in detail but it states that it is impossible to write a program
that can tell if a loop is infinite or not. This is a...
|
by: Gustavo Randich |
last post by:
The following seems to be a bug. The execution returns rows 1,2. It
should return 1,1. In fact, if I run the code within a stored procedure
alone (not in a trigger), the loop doesn't overwrite the...
|
by: Martin Schou |
last post by:
Please ignore the extreme simplicity of the task :-) I'm new to C,
which explains why I'm doing an exercise like this.
In the following tripple nested loop:
int digit1 = 1;
int digit2 = 0;...
|
by: Toby Newman |
last post by:
At the page:
http://www.strath.ac.uk/IT/Docs/Ccourse/subsection3_8_3.html#SECTION0008300000000000000
or
http://tinyurl.com/4ptzs
the author warns:
"The for loop is frequently used, usually...
|
by: Alex |
last post by:
Compiler - Borland C++ 5.6.4 for Win32 Copyright (c) 1993, 2002 Borland
Linker - Turbo Incremental Link 5.65 Copyright (c) 1997-2002 Borland
Platform - Win32 (XP)
Quite by accident I stumbled...
|
by: Ben R. |
last post by:
In an article I was reading
(http://www.ftponline.com/vsm/2005_06/magazine/columns/desktopdeveloper/),
I read the following:
"The ending condition of a VB.NET for loop is evaluated only once,...
|
by: cj |
last post by:
When I'm inside a do while loop sometimes it's necessary to jump out of
the loop using exit do. I'm also used to being able to jump back and
begin the loop again. Not sure which language my...
|
by: ADezii |
last post by:
If you are executing a code segment for a fixed number of iterations, always use a For...Next Loop instead of a Do...Loop, since it is significantly faster. Each pass through a Do...Loop that...
|
by: taylorcarr |
last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
|
by: aa123db |
last post by:
Variable and constants
Use var or let for variables and const fror constants.
Var foo ='bar';
Let foo ='bar';const baz ='bar';
Functions
function $name$ ($parameters$) {
}
...
|
by: ryjfgjl |
last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
|
by: BarryA |
last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
|
by: Sonnysonu |
last post by:
This is the data of csv file
1 2 3
1 2 3
1 2 3
1 2 3
2 3
2 3
3
the lengths should be different i have to store the data by column-wise with in the specific length.
suppose the i have to...
|
by: Hystou |
last post by:
There are some requirements for setting up RAID:
1. The motherboard and BIOS support RAID configuration.
2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
| |