Нужна помощь, чтобы выбрать и зациклить таблицу asp classic - PullRequest
1 голос
/ 15 марта 2019

Мне нужна помощь в правильном цикле. Я что-то упускаю.

Я должен выбрать заказ из таблицы корзины, а затем отправить клиенту подтверждение с продуктами и адресом торговой компании из другой таблицы.

Проблема в том, что продукты в 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 голосов
/ 22 марта 2019

Вот sql-команда, которая выдаст всю информацию в одном наборе записей, а затем вы можете просто написать каждую линейку продуктов, и когда идентификатор пользователя изменится, ТО вы пишете адрес предыдущей компании (который у вас есть в переменных как раньше).

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 за таблицей namnes - только более короткие имена для этих таблиц. Вы могли бы также использовать полные имена.

THEN, в цикле do before вы записываете информацию об адресе компании, как вы это делали, а затем вы проверяете первую строку в цикле do till, проверяя, отличается ли 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 />"

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...