为什么执行到If (Not rs2.EOF) Then时显示对象关闭???
Private Sub Command5_Click()
checkbq
opendb
On Error Resume Next
Dim rs As New ADODB.Recordset
Dim rs2 As New ADODB.Recordset
lc_sql = "select * from lcryk "
rs.Open lc_sql, Conn, 3, 3
While Not rs.EOF
jbqk_sql = "Select * from base_fqjbqk where zf_lcbm= ' " & rs.Fields( "bm ") & " ' '更新base_fqjbqk表中的夫流出编号 "
rs2.Open jbqk_sql, Conn, 3, 3
If (Not rs2.EOF) Then
rs2.Fields( "zf_hyzh ") = rs.Fields( "hyz_bm ")
rs2.Update
End If
rs.MoveNext
Wend
rs.Close
rs2.Close
MsgBox "修改成功! ", vbInformation, "异步软件 "
End Sub
[解决办法]
jbqk_sql = "Select * from base_fqjbqk where zf_lcbm= ' " & rs.Fields( "bm ") & " '
这句sql错误
[解决办法]
jbqk_sql = "Select * from base_fqjbqk where zf_lcbm= ' " & rs.Fields( "bm ") & " ' " '更新base_fqjbqk表中的夫流出编号
一个双引号放错了位置
[解决办法]
把rs2.Open jbqk_sql, Conn, 3, 3
该成 rs2.Open jbqk_sql, Conn, 1, 1
[解决办法]
要么就是在vb中不可以那么连续使用两个Recordset?
[解决办法]
若此句之前rs2未能的到纪录集合,则下面的语句会出错 对象关闭
If (Not rs2.EOF) Then
rs2.Fields( "zf_hyzh ") = rs.Fields( "hyz_bm ")
rs2.Update
End If
所以应该是:
jbqk_sql = "Select * from base_fqjbqk where zf_lcbm= ' " & rs.Fields( "bm ") & " ' '更新base_fqjbqk表中的夫流出编号 "
rs2.Open jbqk_sql, Conn, 3, 3
这两句代码出错了
看看你的程序是否能正确的到数据集合??
[解决办法]
jbqk_sql = "Select * from base_fqjbqk where zf_lcbm= ' " & rs.Fields( "bm ") & " ' '更新base_fqjbqk表中的夫流出编号 "
rs2.Open jbqk_sql, Conn, 3, 3
因为现在rs2查询到纪录了,即使语句正确,若rs2没有查询到纪录,则rs2仍然是关闭的,那么If (Not rs2.EOF) Then
语句也会出错的。
[解决办法]
有一个题外的问题,
rs2.close
最好放在Wend上面.而不是放在Wend之后
[解决办法]
试试用这一条语句代替你的代码
update set base_fqjbqk.zf_hyzh=lcryk.bm where base_fqjbqk.zf_lcbm = lcryk.bm
------解决方案--------------------
update base_fqjb set base_fqjbqk.zf_hyzh=lcryk.bm where base_fqjbqk.zf_lcbm = lcryk.bm
