ASP 一个查询程序后台运行到1分30秒之后出现问题

woxuevc2005 2016-04-07 08:25:55
代码如下,这是怎么回事,SQL2005数据库不能持续运行1分30秒吗,这个程序用到3层循环,估计要从SQL数据库中输出10万条记录,但运行到1分30秒的时候就出现
Microsoft OLE DB Provider for SQL Server 错误 '80004005'
[DBNETLIB][ConnectionOpen (Connect()).]SQL Server 不存在或拒绝访问。



<%
if request.Cookies("shiwei_username")="" then
%>
<script language="javascript">
top.location.href="../index.asp"
</script>
<%
response.end
end if
%>
<!-- #include file="../conn2.asp" -->
<html>
<head>
<title>生产订单综合查询</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="../style/style.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="../My97DatePicker/WdatePicker.js"></script>
<style>
body {
background-color:#FFFFFF;
}
*{margin:0;padding:0;}
</style>
<script language=javascript>
function preview() {
bdhtml=window.document.body.innerHTML;
sprnstr="<!--startprint-->";
eprnstr="<!--endprint-->";
prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17);
prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));
window.document.body.innerHTML=prnhtml;
window.print();
window.document.body.innerHTML=bdhtml;
}
function check() {
var b=false;
if(scddzhcx.rname.value != "")
{
b=true;
}
else
{
if (scddzhcx.fname.value != "" && scddzhcx.f2name.value != "")
{
b=true;
}
if(scddzhcx.lname.value != "" && scddzhcx.l2name.value != "")
{
b=true;
}
}
if(b==false)
alert("请输入查询条件!");
if(b==true)
{
document.getElementById('m').style.display='none';
document.getElementById('pm').style.display='';
}
return b;
}
</script>
</HEAD>
<BODY>
<%
dim arr(200000,17)
dim rst,rst2,rst3
dim jdr,scddh1,scddh2,jdrq1,jdrq2
dim mids
jdr=trim(request("rname"))
scddh1=trim(request("fname"))
scddh2=trim(request("f2name"))
jdrq1=trim(request("lname"))
jdrq2=trim(request("l2name"))
if len(jdr)=0 and len(scddh1)=0 and len(scddh2)=0 and len(jdrq1)=0 and len(jdrq2)=0 then
response.Write "请填写查询条件!"
response.End
end if

if len(jdr)>0 then
sql = "select a.createdate,b.cpersonname,a.moid,a.mocode from mom_order a left join AA_User b on a.CreateUser=b.cpersoncode where b.cpersonname='" & jdr & "'"

if len(scddh1)>0 and len(scddh2)>0 then
sql =sql & " and a.moid>='" & scddh1 & "' and a.moid<='" & scddh2 & "'"
end if

if len(jdrq1)>0 and len(jdrq2)>0 then
sql = sql & " and a.createdate>='" & jdrq1 & "' and a.createdate<='" & jdrq2 & "'"
end if
else
if len(scddh1)>0 and len(scddh2)>0 then
sql = "select a.createdate,b.cpersonname,a.moid,a.mocode from mom_order a left join AA_User b on a.CreateUser=b.cpersoncode where mocode>='" & scddh1 & "' and mocode<='" & scddh2 & "'"
else
sql = "select a.createdate,b.cpersonname,a.moid,a.mocode from mom_order a left join AA_User b on a.CreateUser=b.cpersoncode where a.createdate>='" & jdrq1 & "' and a.createdate<='" & jdrq2 & "'"
end if
end if
sql=sql & " order by a.mocode"
Set rst = connf.Execute(sql)
%>
<div id="pm" style="display:none;text-align:center;"><br><br>请耐心等待,程序正在努力为您工作中。。。</div>
<div id='m'>
<form action="" method="get" name="scddzhcx" style="font-size:14px;background:#D8D8EB;">
生产订单: <input type="text" name="fname" value="<%=request("fname")%>" />
到: <input type="text" name="f2name" value="<%=request("f2name")%>" />
建档日期: <input type="text" name="lname" onClick="WdatePicker()" value="<%=request("lname")%>" />
到: <input type="text" name="l2name" onClick="WdatePicker()" value="<%=request("l2name")%>" />
<p>
建档人: <input type="text" name="rname" value="<%=request("rname")%>" />
<input type="submit" value="查询" onclick="return check()" />
</p>
</form>
<%
If rst.BOF = 0 Then

j = 0

Do Until rst.EOF

id = rst.Fields(2)

If Len(id) > 0 Then

sql = "select a.modid as 序号,a.SortSeq as 行号,a.invcode as 物料编码,b.cinvname as 物料名称,"
sql = sql & "c.cComUnitName as 计量单位,a.qty as 生产数量, a.QualifiedInQty as 完成数量,case when a.Status=1 then '开立' when a.Status=2 then '锁定' when a.Status=3 then '审核' when a.Status=4 then '关闭' end as 状态 "
sql = sql & "from mom_orderdetail a left join inventory b on a.invcode=b.cinvcode left join "
sql = sql & "ComputationUnit c on b.cComUnitCode=c.cComunitCode where moid='" & id & "' and a.Status<>4"
Set rst2 = connf.Execute(sql)Do Until rst2.EOF

mids = rst2.Fields(0)

sql = "select a.SortSeq as 行号, a.InvCode as 子件物料编码, b.cinvname as 子件物料名称,b.cInvStd as 子件规格,c.cComUnitName as 计量单位,case when b.iSupplyType=0 then '领用' when b.iSupplyType=1 then '入库倒冲' when b.iSupplyType=2 then'' when b.iSupplyType=3 then '' when b.iSupplyType=4 then '直接供应' end as 子件属性, a.qty as 应领数量,a.IssQty as 已领量 "
sql = sql & "from mom_moallocate a left join inventory b on a.invcode=b.cinvcode left join ComputationUnit c on b.cComUnitCode=c.cComunitCode where modid=' " & mids & "'"

Set rst3 = connf.Execute(sql)

Do Until rst3.EOF

j = j + 1

arr(j,0)=rst.fields(3)
arr(j,1)=rst2.fields(1)
arr(j,2)=rst2.fields(2)
arr(j,3)=rst2.fields(3)
arr(j,4)=rst2.fields(4)
arr(j,5)=rst2.fields(5)
arr(j,6)=rst2.fields(6)
arr(j,7)=rst3.fields(0)
arr(j,8)=rst3.fields(1)
arr(j,9)=rst3.fields(2)
arr(j,10)=rst3.fields(3)
arr(j,11)=rst3.fields(4)
arr(j,12)=rst3.fields(5)
arr(j,13)=rst3.fields(6)
arr(j,14)=rst3.fields(7)
arr(j,15)=rst.fields(0)
arr(j,16)=rst.fields(1)
arr(j,17)=rst2.fields(7)

rst3.MoveNext
Loop
rst2.MoveNext
Loop
End If
rst.MoveNext
loop
End If
if j>0 then
%>
<table id="bi" width="100%" border="1" cellpadding="0" cellspacing="0" align="center" style="font-size:12px;">
<tr>
<td>序号</td>
<td>生产订单号</td>
<td>行号</td>
<td>物料编码</td>
<td>物料名称</td>
<td>计量单位</td>
<td>生产数量</td>
<td>完成数量</td>
<td>子件行号</td>
<td>子件物料编码</td>
<td>子件物料名称</td>
<td>子件规格</td>
<td>计量单位</td>
<td>子件属性</td>
<td>应领数量</td>
<td>已领量</td>
<td>建档日期</td>
<td>建档人</td>
<td>状态</td>
</tr>
<%for i=1 to j%>
<tr>
<td><%=i %></td>
<td><%=arr(i,0)%></td>
<td><%=arr(i,1)%></td>
<td><%=arr(i,2)%></td>
<td><%=arr(i,3)%></td>
<td><%=arr(i,4)%></td>
<td><%=arr(i,5)%></td>
<td><%=arr(i,6)%></td>
<td><%=arr(i,7)%></td>
<td><%=arr(i,8)%></td>
<td><%=arr(i,9)%></td>
<td><%=arr(i,10)%></td>
<td><%=arr(i,11)%></td>
<td><%=arr(i,12)%></td>
<td><%=arr(i,13)%></td>
<td><%=arr(i,14)%></td>
<td><%=arr(i,15)%></td>
<td><%=arr(i,16)%></td>
<td><%=arr(i,17)%></td>
</tr>
<%next%>
</table>
<%
end if
%>
</div>
</body>
</html>
...全文
227 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wudao0501 2016-05-12
  • 打赏
  • 举报
回复
一定要这么写的话那就在recordset对象用完后就关闭
Rotel-刘志东 2016-04-28
  • 打赏
  • 举报
回复
分页显示不但对性能考虑
hxm_admin 2016-04-20
  • 打赏
  • 举报
回复
全部写在前台这样真的好吗? 建议还是放后台吧
php_wsd 2016-04-08
  • 打赏
  • 举报
回复
数据库索引做了吗?
hookee 2016-04-08
  • 打赏
  • 举报
回复
设置 Server.ScriptTimeout = 1800 一次输出 10万条记录,不是好的方案,至少可以分页输出。 三重循环也不够好,用存储过程看看。

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧