L oop через 2 набора записей для создания HTML таблицы в электронном письме - PullRequest
1 голос
/ 17 июня 2020

Я использую Office 365 и пытаюсь создать электронное письмо HTML из базы данных Access. Я хочу создать таблицу, которая перебирает 2 набора записей. Первый набор записей - это запрос, отображающий «Проблемы», а второй набор записей - это запрос, отображающий контрмеры для проблем с отношением «один ко многим» между ними. Вот как я хочу отображать таблицы:

<TABLE>
    <TH>Header from Access Table 1 – issue #1</TH>
    <TR>Row from Access Table 1– issue #1</TR>
    <TH>Header from Access Table 2 – CM # 1</TH>
    <TR>Row from Access Table 2 – CM # 1</TR>
</TABLE>

<TABLE>
    <TH>Header from Access Table 1 – issue #2</TH>
    <TR>Row from Access Table 1– issue #2</TR>
    <TH>Header from Access Table 2 – CM # 2</TH>
    <TR>Row from Access Table 2 – CM # 2</TR>
</TABLE>

Но я получаю:

<TABLE>
    <TH>Header from Access Table 1 – issue #1</TH>
    <TR>Row from Access Table 1– issue #1</TR>
</TABLE>
<TABLE>
    <TH>Header from Access Table 1 – issue #2</TH>
    <TR>Row from Access Table 1– issue #2</TR>
</TABLE>
<TABLE>
     <TH>Header from Access Table 2 – CM # 2</TH>
     <TR>Row from Access Table 2 – CM # 2</TR>
</TABLE>

Может ли кто-нибудь указать мне правильное направление, чтобы мой код зацикливался правильно?

     strSQL2 = "SELECT * FROM qryZoneIssue " & _
                    " WHERE qryZoneIssue.ZoneMeetingID = " & HoldMeetingID

                '*********** display issues & CMs
                    Set rs2 = CurrentDb.OpenRecordset(strSQL2, dbOpenDynaset)
                    rs2.MoveFirst
                    Do While Not rs2.EOF

           strBody2 = strBody2 & "<TABLE Border=""1"", Cellspacing=""0""><TR>" & _
           "<TH Bgcolor=""#2B3856"", Align=""Center""><Font Color=#FFFFFF><b><p style=""font-size:14px"">No.&nbsp;</p></Font></TH>" & _
           "<TH Bgcolor=""#2B3856"", Align=""Center""><Font Color=#FFFFFF><b><p style=""font-size:14px"">KPI&nbsp;</p></Font></TH>" & _
           "<TH Bgcolor=""#2B3856"", Align=""Center""><Font Color=#FFFFFF><b><p style=""font-size:14px"">Ranking&nbsp;</p></Font></TH>" & _
           "<TH Bgcolor=""#2B3856"", Align=""Center""><Font Color=#FFFFFF><b><p style=""font-size:14px"">RPS Started&nbsp;</p></Font></TH>" & _
           "<TH Bgcolor=""#2B3856"", Align=""Center""><Font Color=#FFFFFF><b><p style=""font-size:14px"">Issue Details&nbsp;</p></Font></TH>" & _
              "</TR>"
                                ' add the data to the table
                                 strBody2 = strBody2 & "<TR>" & _
                     "<TD align=center width=""10%"">" & rs2.Fields![ZoneIssueNo].Value & "</TD>" & _
                     "<TD align=center width=""15%"">" & rs2.Fields![ZoneKPI].Value & "</TD>" & _
                     "<TD align=center width=""10%"">" & rs2.Fields![ZoneRankID].Value & "</TD>" & _
                     "<TD align=center width=""15%"">" & rs2.Fields![RPSStarted].Value & "</TD>" & _
                     "<TD align=left width=""50%"">" & rs2.Fields![ZoneIssue].Value & "</TD>" & _
                                 "</TR>"

            strSQL3 = "SELECT * FROM qryZonePermCM " & _
                    " WHERE qryZonePermCM.ZoneMeetingID = " & HoldMeetingID & "AND ZoneIssueID = " & rs2.Fields![ZoneIssueID].Value

                            strBody2 = strBody2 & "</table>"
                            rs2.MoveNext
                            Loop

                    Set rs3 = CurrentDb.OpenRecordset(strSQL3, dbOpenDynaset)
                    rs3.MoveFirst
                    Do While Not rs3.EOF

           strBody2 = strBody2 & "<TABLE Border=""1"", Cellspacing=""0""><TR>" & _
       "<TH Bgcolor=""#2B3856"", Align=""Center""><Font Color=#FFFFFF><b><p style=""font-size:14px"">CM Details&nbsp;</p></Font></TH>" & _
       "<TH Bgcolor=""#2B3856"", Align=""Center""><Font Color=#FFFFFF><b><p style=""font-size:14px"">Responsible&nbsp;</p></Font></TH>" & _
       "<TH Bgcolor=""#2B3856"", Align=""Center""><Font Color=#FFFFFF><b><p style=""font-size:14px"">Target Date&nbsp;</p></Font></TH>" & _

                                ' add the data to the table
                                 strBody2 = strBody2 & "<TR>" & _
                     "<TD align=left width=""40%"">" & rs3.Fields![CMDetails].Value & "</TD>" & _
                     "<TD align=center width=""15%"">" & rs3.Fields![Responsible].Value & "</TD>" & _
                     "<TD align=center width=""10%"">" & rs3.Fields![TargetDate].Value & "</TD>" & _
                                 "</TR>"
                        strBody2 = strBody2 & "</table>"
                       rs3.MoveNext
                            Loop
                        rs3.Close

1 Ответ

0 голосов
/ 18 июня 2020

Требуется l oop второй набор записей внутри l oop первого набора записей. Также ошибка синтаксиса SQL - нужен пробел перед AND: " AND ZoneIssueID = ". Отсутствует тег </TR>.

Не запускать таблицу для данных второго набора записей.

Учитывайте:

strSQL2 = "SELECT * FROM qryZoneIssue WHERE ZoneMeetingID = " & HoldMeetingID
'*********** display issues & CMs
Set rs2 = CurrentDb.OpenRecordset(strSQL2, dbOpenDynaset)
rs2.MoveFirst
Do While Not rs2.EOF
    strBody2 = strBody2 & "<TABLE Border=""1"", Cellspacing=""0""><TR>" & _
        "<TH Bgcolor=""#2B3856"", Align=""Center""><Font Color=#FFFFFF><b><p style=""font-size:14px"">No.&nbsp;</p></Font></TH>" & _
        "<TH Bgcolor=""#2B3856"", Align=""Center""><Font Color=#FFFFFF><b><p style=""font-size:14px"">KPI&nbsp;</p></Font></TH>" & _
        "<TH Bgcolor=""#2B3856"", Align=""Center""><Font Color=#FFFFFF><b><p style=""font-size:14px"">Ranking&nbsp;</p></Font></TH>" & _
        "<TH Bgcolor=""#2B3856"", Align=""Center""><Font Color=#FFFFFF><b><p style=""font-size:14px"">RPS Started&nbsp;</p></Font></TH>" & _
        "<TH Bgcolor=""#2B3856"", Align=""Center""><Font Color=#FFFFFF><b><p style=""font-size:14px"">Issue Details&nbsp;</p></Font></TH>" & _
        "</TR>"
    ' add the data to the table
    strBody2 = strBody2 & "<TR>" & _
        "<TD align=center width=""10%"">" & rs2.Fields![ZoneIssueNo].Value & "</TD>" & _
        "<TD align=center width=""15%"">" & rs2.Fields![ZoneKPI].Value & "</TD>" & _
        "<TD align=center width=""10%"">" & rs2.Fields![ZoneRankID].Value & "</TD>" & _
        "<TD align=center width=""15%"">" & rs2.Fields![RPSStarted].Value & "</TD>" & _
        "<TD align=left width=""50%"">" & rs2.Fields![ZoneIssue].Value & "</TD>" & _
        "</TR>"

    strSQL3 = "SELECT * FROM qryZonePermCM WHERE ZoneMeetingID = " & HoldMeetingID & " AND ZoneIssueID = " & rs2!ZoneIssueID

    Set rs3 = CurrentDb.OpenRecordset(strSQL3, dbOpenDynaset)

    strBody2 = strBody2 & "<TR>" & _
        "<TH Bgcolor=""#2B3856"", Align=""Center""><Font Color=#FFFFFF><b><p style=""font-size:14px"">CM Details&nbsp;</p></Font></TH>" & _
        "<TH Bgcolor=""#2B3856"", Align=""Center""><Font Color=#FFFFFF><b><p style=""font-size:14px"">Responsible&nbsp;</p></Font></TH>" & _
        "<TH Bgcolor=""#2B3856"", Align=""Center""><Font Color=#FFFFFF><b><p style=""font-size:14px"">Target Date&nbsp;</p></Font></TH>" & _
        "</TR>"

    Do While Not rs3.EOF        ' add the data to the table
        strBody2 = strBody2 & "<TR>" & _
            "<TD align=left width=""40%"">" & rs3.Fields![CMDetails].Value & "</TD>" & _
            "<TD align=center width=""15%"">" & rs3.Fields![Responsible].Value & "</TD>" & _
            "<TD align=center width=""10%"">" & rs3.Fields![TargetDate].Value & "</TD>" & _
            "</TR>"
        rs3.MoveNext
    Loop
    strBody1 = strBody1 & strBody2 & "</table>"
    strBody2 = ""
    rs3.Close
    rs2.MoveNext
Loop
rs2.Close
'set email HTMLbody to strBody1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...