需要帮助来选择和循环ASP经典表

时间:2019-03-15 07:03:48

标签: asp-classic

我需要一些帮助以正确的方式循环。我丢失了一些东西。

我必须从购物车表中选择一个订单,然后从另一个表中将包含产品和销售公司地址的确认邮件邮寄给客户。

问题是1订单中的产品可能来自2个不同的公司,因此我需要先显示1公司的产品,然后显示1公司的地址,再显示2公司的产品,再显示2公司的地址

所以它应该看起来像这样。

产品1 产品2

公司名称1 地址1 邮政编码1 城市1

产品3 产品4

公司名称2 地址2 邮编2 城市2

这就是我现在所拥有的。

sql = " SELECT * FROM cart WHERE ordernummer = "&ordernummer&" group by userId"
set rs = conn.Execute (sql)

do until rs.eof
            uId=rs("userId")
            sql7 = " SELECT * FROM cart WHERE userId = "&uId&""
            set rs7 = conn.Execute (sql7)
            do until rs7.eof
                art=art&"<br>"&rs7("artikel")&" "&rs7("pris")&" kr"
            rs7.movenext
            loop

sql3 = " SELECT * FROM users WHERE userId = "&uId&""
            set rs3 = conn.Execute (sql3)
            foretagsnamn=rs3("foretagsnamn")
            adress=rs3("adress")
            postnr=rs3("postnr")
            postadress=rs3("postadress")
            email=rs3("email")
            hamtatext=rs3("hamtatext")
            kartlank=rs3("kartaemaillink")

            companyinfo="<br><br>"&foretagsnamn&"<br>" &_ 
             adress&"<br>" &_ 
             postnr&"<br>" &_ 
             postadress&"<br>" &_ 
             "<a href=mailto:"&email&" style='text-decoration:none;color:#6d6d72;' target='_blank'>"&email&"</a><br>" &_
             "<a href="&kartlank&" target='_blank' style='text-decoration:none;color:#F90;'>Se karta</a><br>" &_ 
             "Du kan nu h&auml;mta dina varor: <span style='color:#F90;'>"& hamtatext &"</span><br><br>"

            companyinfo2=companyinfo2+companyinfo
            companyinfo=""
            art2=art2+art
            art = ""      
     rs.movenext
     loop



     message="<br>"&art2&companyinfo2
    response.write message&"<br>"

数据库看起来像这样。 其中userId是不同的公司。

enter image description here

但是,这将显示所有产品,然后仅显示公司1的信息。 我已经测试了许多不同的变体,但是我做对了。 因此,非常感谢任何输入。

1 个答案:

答案 0 :(得分:0)

这是一条sql命令,它将在一个记录集中提供所有信息,然后您可以编写每个产品系列,并且当用户ID更改时,则可以编写以前的公司地址(变量中包含之前)。

sql="select * from cart c join users u on c.userID=u.userID where c.ordernummer = "&ordernummer&" group by c.userId"

上面的sql在两个表的userID列上将两个表连接在一起。表名称后面的c和u只是这些表的简称。您也可以使用全名。

然后,在do until循环中,写下完成的公司地址信息,然后在do until循环中的第一行进行检查,检查rs.userID是否与您已保存的变量userID,如果已保存,则写入地址。另外,在没有更多行之后,您需要在循环外写最后一家公司的地址:)

完整代码(我会尽可能多地使用您的代码):

sql = " select * from cart c join users u on c.userID=u.userID where c.ordernummer = "&ordernummer&" group by c.userId"
set rs = conn.Execute (sql)
uId=0
do until rs.eof
    if uID<>rs("userId") and uID>0 then
        'This next row is a new company, Write the company information here, before getting new info and writing new rows.
        companyinfo="<br><br>"&foretagsnamn&"<br>" &_ 
         adress&"<br>" &_ 
         postnr&"<br>" &_ 
         postadress&"<br>" &_ 
         "<a href=mailto:"&email&" style='text-decoration:none;color:#6d6d72;' target='_blank'>"&email&"</a><br>" &_
         "<a href="&kartlank&" target='_blank' style='text-decoration:none;color:#F90;'>Se karta</a><br>" &_ 
         "Du kan nu h&auml;mta dina varor: <span style='color:#F90;'>"& hamtatext &"</span><br><br>"

        response.write companyinfo&"<br />"
    end if

    uId=rs("userId")
    foretagsnamn=rs("foretagsnamn")
    adress=rs("adress")
    postnr=rs("postnr")
    postadress=rs("postadress")
    email=rs("email")
    hamtatext=rs("hamtatext")
    kartlank=rs("kartaemaillink")
    'Do a response.write of this data here for each row below.                
    art=art&"<br>"&rs("artikel")&" "&rs("pris")&" kr"
    response.write art&"<br />"
    art = ""      
    rs.movenext
loop

'Remeber to write the last company data outside of the loop aswell:
companyinfo="<br><br>"&foretagsnamn&"<br>" &_ 
 adress&"<br>" &_ 
 postnr&"<br>" &_ 
 postadress&"<br>" &_ 
 "<a href=mailto:"&email&" style='text-decoration:none;color:#6d6d72;' target='_blank'>"&email&"</a><br>" &_
 "<a href="&kartlank&" target='_blank' style='text-decoration:none;color:#F90;'>Se karta</a><br>" &_ 
 "Du kan nu h&auml;mta dina varor: <span style='color:#F90;'>"& hamtatext &"</span><br><br>"
   response.write companyinfo&"<br />"

希望有帮助。