首页 > 解决方案 > 需要帮助来选择和循环表格 asp 经典

问题描述

我需要一些帮助才能以正确的方式循环。我错过了一些东西。

我必须从购物车表中选择一个订单,然后通过另一个表中的产品和销售公司地址向客户发送确认邮件。

问题是 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 是不同的公司。

在此处输入图像描述

但是这样一来,它会显示所有产品,然后仅显示公司 1 信息。我已经测试了这么多不同的变体,但我做错了。因此,任何输入都非常感谢,谢谢。

标签: asp-classic

解决方案


这是一个 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 />"

希望能帮助到你。


推荐阅读