经典 ASP do 循环只返回 1 个结果

Classic ASP do loop only returning 1 result

有人可以看看我的循环吗? SQL 语句 returns 5 在 SQL Management Studio 中产生,但页面上只有 1 个。我猜这是我的循环,但我不明白为什么。这可能是显而易见的。

function getpayments()  

dim sqlpay, rspay, oStr, paystat

sqlpay = (Returns 5 results) 
sqlexecute sqlpay, rspay
if not rspay.eof then
    do until rspay.eof
        paystat = rspay("Status")
        oStr = "<tr><td>" & sh(rspay("Date")) & "</td><td>" & sh(rspay("TypeName")) & "</td>"
            if (paystat = "Cheque Sent") or (paystat = "Transfer Made") or (paystat = "Cash Paid") or (paystat = "BACS Cleared") or (paystat = "Transfer Cleared") or (paystat = "BACS Sent") or (paystat = "Cash Cleared") or (paystat = "Cheque Cleared") then
                oStr = oStr & "<td><span class=""label label-success"">Complete</span></td>"
            elseif (paystat = "Committed") or (paystat = "On Hold") then
                oStr = oStr & "<td><span class=""label label-warning"">Pending</span></td>"
            else
                oStr = oStr & "<td><span class=""label label-danger"">Not Approved</span></td>"
            end if
        oStr = oStr & "<td>&pound;" & sh(rspay("Amount")) & "</td></tr>"
        rspay.MoveNext
    Loop
else
    oStr = "<tr><td>No payments found</td></tr>"
    rspay.close
end if
set rspay = nothing

getpayments = oStr

end function

我现在看到了。您可能获得了 5 条记录,但您的 oStr 字符串在每次迭代中都被分配了一个值,覆盖了之前的值。因此,您可能只会从该函数返回 last 记录。

oStr = "<tr><td>" & sh(rspay("Date"))...  ' This is overwriting any previous value

所以你真的没有在这里连接你的记录,因为它 "reset" 与每个新记录。只需将其更改为:

oStr = oStr & "<tr><td>" & sh(rspay("Date"))...