记录集上的while循环保持运行,而总记录数减少

时间:2015-07-10 12:41:00

标签: sql-server loops asp-classic recordset

IO在我的asp经典页面中遇到了一个非常奇怪的问题。我正在为员工制定休假日程。当我测试它似乎工作正常。虽然有另一个选择,我可以来回一周,当我回到3周后,循环不断循环在一条记录上。

所以我想通过在SQL执行后对记录集进行计数来检查问题所在。

出于某种原因,do while循环保持循环。我在do中做了一个打印计数,同时查看它找到了多少记录,现在它已经在508 000了!

所以在我的t-sql server(2012)中,我做了完全相同的查询,在这里它只产生了953条记录......

显然,循环中出现了问题。

以下是我正在使用的代码:

strSQL = "SELECT * FROM [qrySnipperKalender_B] WHERE [snipperdag] >= "& szStart &" AND [snipperdag]<= "& szEnd &" ORDER BY [FunctieGroep], [Relatienaam], [Datum] ASC"


    response.write(strSQL & "<br> <br>")

    set rst=con_sql.execute(strSQL)
    CountCheck = 0


    Do until rst.EOF or rst.BOF
        response.write("Count is: " & CountCheck & "<br>")

        CountCheck = CountCheck + 1
    Loop

    response.write("RST count      :" & CountCheck)
    response.end

response.end和response.write RST计数永远不会被命中,它只是保持循环使页面非常慢。

response.write SQL导致:SELECT * FROM [qrySnipperKalender_B] WHERE [snipperdag] >= 15281 AND [snipperdag]<= 15355 ORDER BY [FunctieGroep], [Relatienaam], [Datum] ASC

当我在SQL服务器中运行此查询时,它会产生953条记录(就像它应该的那样)。

所以问题是,为什么这个循环被破坏/保持运行?

我已经尝试用rst.BOF修改循环(首先我只有EOF),但这并没有任何效果。我也尝试在循环中使用IF条件,如果它击中EOF然后退出循环,但这也不起作用。

1 个答案:

答案 0 :(得分:4)

您忘记在循环中private string CreateDDLColumnEditTemplate(int index, string propertyName, List<Product> ProductList) { StringBuilder CellTemp = new StringBuilder(); CellTemp.Append("<DataTemplate "); CellTemp.Append("xmlns='http://schemas.microsoft.com/winfx/"); CellTemp.Append("2006/xaml/presentation' "); CellTemp.Append("xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'>"); CellTemp.Append(String.Format("<ComboBox SelectedValue='{{Binding [{0}], Mode=TwoWay}}'>",0)); foreach (Product product in ProductList) { CellTemp.Append("<ComboBoxItem Tag='"+product.ProductGuid+"' Content='" + product.Name + "'></ComboBoxItem>"); } CellTemp.Append(String.Format("</ComboBox>")); CellTemp.Append("</DataTemplate>"); return CellTemp.ToString(); } 导航到下一条记录

#include <iostream>
using namespace std;
class a
{
    public:
    virtual void f(){cout<<"a fn"<<endl;};
    virtual ~a(){cout<<"destruct a"<<endl;};
};

class b: public a
{
    public:
    void f(){cout<<"b fn"<<endl;};
    ~b(){cout<<"destruct b"<<endl;};
};

int main() {
    class a *aa = new a;
    class b *bb = new b;
    aa = bb;

    aa->f();

    delete aa;
    delete bb;

    return 0;
}