runmin(runmin.vicp.net):大哥,你好。我用Js写服务器端脚本,又出现一个问题,万思不得其解,请帮忙!
var A=new Array(14);
for(t=0;t<14;t++)A[t]=0;
if(matRs.RecordCount!=0) //此处 matRs 已经有数据!
{
A[0]=matRs(0);A[1]=matRs(1);A[2]=matRs(2);A[3]=matRs(3);
sql1="select mattype,matname,spec,unit,nvl(sum(amount),0) as amount from materialin where mattype='"+rs(1)+"' and matname='"+matRs(0)+"' and spec='"+matRs(1)+"' and unit='"+matRs(2)+"' and to_char(matmap(indate),'yyyy-mm')<=to_char(add_months(matmap(to_date("+dateStr+",'yyyy-mm-dd')),-1),'yyyy-mm') group by mattype,matname,spec,unit";
if(myRs.state==1)myRs.Close();
myRs.Open(sql1,conn);
if(myRs.RecordCount!=0)A[4]=myRs("amount");
Response.Write(sql1+"
1<br/>
1
1<br/>
")
Response.Write(A[4]+"
1<br/>
")
sql1="";
sql1="select mattype,matname,spec,nvl(sum(amount),0) as amount from matusedept where mattype='"+rs(1)+"' and matname='"+matRs(0)+"' and spec='"+matRs(1)+"' and to_char(matmap(outdate),'yyyy-mm')<=to_char(matmap(add_months(to_date("+dateStr+",'yyyy-mm-dd'),-1)),'yyyy-mm') group by mattype,matname,spec";
if(myRs.state==1)myRs.Close();
myRs.Open(sql1,conn);
Response.Write(A[4]);//此处报错 ADODB.Field 错误 '80020009'
对象不再有效。
if(myRs.RecordCount!=0)A[4]=A[4]-myRs.Fields("amount");
Response.Write(sql1+"
1<br/>
5
1<br/>
")
Response.Write(A[4]+"
1<br/>
")
很茫然,为什么 A[4] 在这里就不能使用了呢???????sql语句输出均可以通过!
---------------------------------------------------------------
你用的什么数据库?
nvl是个什么函数?返回的是什么类型的数据?
你可以试一下
if(myRs.RecordCount!=0)A[4]=myRs("amount");
==>
if(myRs.RecordCount!=0)A[4]=myRs("amount").toString();
---------------------------------------------------------------
首先你将
if(myRs.RecordCount!=0)A[4]=myRs("amount");
==>
if(myRs.RecordCount!=0)A[4]=12345;
or
if(myRs.RecordCount!=0)A[4]="12345";
如果问题依旧,就不是数据类型的问题,检查程序逻辑