2008-11-25 29 views
-1

我有一个ASP页面,它将从数据库表中查询记录并做一些处理,然后在浏览器中渲染一个HTML表格。我的表格中有16000多行。当我运行prigram与选择顶尖2500 StudId StudName,StudName从StudentsTbl,它工作正常。但是当我使用选择“StudId,StudName从StudentsTbl”,它不显示任何输出。我在while循环中每50个记录之后使用Response.flush()。可以有人告诉我如何解决这个问题吗?在此先感谢ASP-No输出大量的记录


Actaully我会加入Response..ContentType =“应用程序/ vnd.ms-EXCEL”那义创建此ASP页Excel文件需要产生的所有数据一次性

+0

你现在在使用application/vnd.ms-excel吗?这仍然失败吗? – AnthonyWJones 2008-11-25 10:27:55

回答

1

根据您对问题的描述,我打赌您使用IE作为您的测试浏览器。 Response.Flush()is输出HTML,但它不会立即显示,因为IE不知道如何递增呈现表。相反,IE在将其绘制到浏览器窗口之前等待整个表输出。你的脚本不是问题,IE是。

说到这里,我想指出你的设计有根本​​性的缺陷。从可用性的角度思考你的脚本:你不需要一次输出16000行数据,没有理由。 Page your recordset in SQL,或使用TOP子句将记录集限制为前1000行。

+0

我同意最可能的解释是,它需要很长时间才能在IE呈现内容之前下载完整的表格。分页或限制记录集不是问题本身所表明的答案。 – AnthonyWJones 2008-11-25 10:32:39

0

尝试将其作为表格输出到浏览器 - 我敢打赌,你会得到一个“Script Timed Out”错误。

最好的办法是增加超时间隔。您可以在脚本开始时使用一些代码来完成此操作,也可以将其作为全局服务器设置来完成。我会推荐前者。

0

Server.ScriptTimeout = 3939393

把它放在你的页面的顶部(我只是选择一个随机数高)。我假设你从IIS获得超时。默认值是90秒。

拿走你的response.flush,它只会让服务器每X毫秒输出到客户端的速度变慢。改为缓冲整个页面(应该在IIS中设置为默认值以获得更好的性能)。

如果仍然失败,错误是什么?也许你的数据库很慢。