不可思议的问题
请看下面这段程序代码:
<!--#include file="conn.asp"-->
<%
Set rs=Server.CreateObject("ADODB.RecordSet")
Set rs1=Server.CreateObject("ADODB.RecordSet")
Set rs2=Server.CreateObject("ADODB.RecordSet")
Set rs3=Server.CreateObject("ADODB.RecordSet")
Set rs4=Server.CreateObject("ADODB.RecordSet")
SQLStr="Select * from grssq Order By grid DESC"
rs.open SQLStr,Conn,3,3,1
If rs.Eof=True Then
''没有操作
Else
for i=1 To rs.RecordCount
Str=" sjgz Like '%"&rs.Fields("gjz")&"%'"
If rs.Fields("xb")<>"不限" Then
If rs.Fields("xb")="男" Then
Str=Str&" and (xb='男' or xb='不限')"
ElseIf rs.Fields("xb")="女" Then
Str=Str&" and (xb='女' or xb='不限')"
End If
End If
nl=DateAdd("yyyy",-rs.Fields("nl"),Date)
Str=Str&" and (Int(nl1)>="&nl&" or Int(nl2)<="&nl&" or (Int(nl1)=0 and Int(nl2)=0))"
If rs.Fields("xl")<>"9" Then
Str=Str&" and whchd>="&rs.Fields("xl")&""
End If
SQLStr2="Select * from qyzhpb where"&Str
Set rs2=Conn.Execute(SQLStr2)
While Not rs2.Eof=True
SQLStr4="Select * from qyqkb where id="&rs2.Fields("qyid")&""
Set rs4=Conn.Execute(SQLStr4)
SQLStr3="Select * from grqkb where id="&rs.Fields("grid")&""
Set rs3=Conn.Execute(SQLStr3)
If rs4.Fields("mshdzh")<>"" Then
dzh=rs4.Fields("mshdzh")
Else
If rs4.Fields("gzdzh")<>"" Then
dzh=rs4.Fields("gzdzh")
Else
dzh=""
End If
End If
Conn.Execute ("Insert into ssqzhpb (sjgz,gsmch,dzh,dh,lxr,sjh) values('"&rs2.Fields("sjgz")&"','"&rs4.Fields("qymch")&"','"&dzh&"','"&rs4.Fields("lxdh")&"','"&rs4.Fields("lxr")&"','"&rs3.Fields("dwdh")&"')")
idjh=rs2.Fields("dxfsjh")&";"&rs3.Fields("id")&";"
Conn.Execute ("Update qyzhpb Set dxfsjh='"&idjh&"' where id="&rs2.Fields("id")&"")
rs2.MoveNext
Wend
rs.MoveNext
If rs.Eof=True Then
Exit For
End If
Next
rs.close
set rs=nothing
rs1.close
set rs1=nothing
rs2.close
set rs2=nothing
rs3.close
set rs3=nothing
rs4.close
set rs4=nothing
conn.close
set conn=nothing
End If
%>
第46行报错:Microsoft JET Database Engine 错误 '80004005'
标准表达式中数据类型不匹配。
/dx/save_qzssq.asp,行46
第46行语句是:rs2.MoveNext
如注释这行,则程序运行良好,但由于进入死循环,会不断添加同一条记录。并且即使将rs2.MoveNext语句移到
SQLStr2="Select * from qyzhpb where"&Str
Set rs2=Conn.Execute(SQLStr2)
下也还报同样的错误。
是不是很不可思议的问题?高手解决!