经典 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>£" & 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"))...
有人可以看看我的循环吗? 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>£" & 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"))...