我有一个ASP页面,它将从数据库表中查询记录并进行一些处理,然后在浏览器中渲染HTML表。我的表中有超过16000行。当我使用StudentTbl选择top 2500 2500 StudId,StudName运行prigram时,它工作正常。但是当我使用时选择“StudId,StudName来自StudentsTbl”,它没有显示任何输出。我在while循环中每50个记录后使用Response.flush()。任何人都告诉我如何解决这个问题?提前致谢
我会通过添加Response..ContentType =“application / vnd.ms-excel”从这个ASP页面创建一个Excel文件。我需要一次生成所有数据
答案 0 :(得分:1)
根据您对问题的描述,我打赌您使用IE作为测试浏览器。 Response.Flush() 输出HTML,但它不会立即显示,因为IE不知道如何以递增方式呈现表。相反,IE在将其绘制到浏览器窗口之前等待整个表输出。你的脚本不是问题,IE是。
话虽如此,我想指出你的设计存在根本缺陷。从可用性角度考虑您的脚本:没有理由说明为什么需要一次输出16000行数据。 Page your recordset in SQL,或使用TOP子句将记录集限制为前1000行。
答案 1 :(得分:0)
尝试将其作为表格输出到浏览器 - 我打赌你会收到“脚本超时”错误。
最好的办法是延长超时间隔。您可以在脚本开头使用一些代码来执行此操作,也可以将其作为全局服务器设置来执行此操作。我会推荐前者。
答案 2 :(得分:0)
Server.ScriptTimeout = 3939393
将它放在页面顶部(我只选择一个随机的高数字)。我假设您从IIS获得超时。默认值为90秒。
拿走你的response.flush,它只会使它变慢,因为服务器必须每隔X毫秒输出一次客户端。而是缓冲整个页面(应该在IIS中设置为默认值以获得更好的性能)。
如果仍然失败,那么错误是什么?也许你的数据库很慢。