Office中国论坛/Access中国论坛

标题: 更新数据时出现了错误 [打印本页]

作者: kent_73    时间: 2012-5-25 13:22
标题: 更新数据时出现了错误
Dim abc
Dim mydb As ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim Rs1 As New ADODB.Recordset
Dim Rs2 As New ADODB.Recordset
Set mydb = CurrentProject.Connection

a = [Forms]![窗体1]![工号]
b = [Forms]![窗体1]![开始日期]
c = [Forms]![窗体1]![截止日期]
d = [Forms]![窗体1]![时间]
e = [Forms]![窗体1]!text123  '假期类别

Sql = "SELECT 部门,班组,工种,姓名,工号, 日期, 退社日期, 锁定, 白班, 加班, 事假, 病假, 产停, 婚丧假, 公假, 工伤, 年公休, 旷工, 放假, 调休, 公出, 休息 FROM Tb_考勤_员工出勤表" _
& " WHERE 工号='" & a & "' AND 日期 >= #" & b & "# And 日期 <=#" & c & "# AND 退社日期 Is Null AND 锁定=0;"
Rs.Open Sql, mydb, adOpenStatic, adLockReadOnly

Sql1 = "select * from Tb_考勤_不能批量请假_temp"
Rs1.Open Sql1, mydb, 2, 3

Sql2 = "SELECT * FROM Tb_考勤_员工出勤表 WHERE 工号='" & a & "' AND 日期 >= #" & b & "# And 日期 <=#" & c & "# AND 退社日期 Is Null AND 锁定=0;"
Rs2.Open Sql2, mydb, 2, 3

For i = 1 To Rs.RecordCount
If Rs.EOF = True Then
MsgBox "没有符合条件的记录!"
Else
abc = Val(Rs!白班) + Val(Rs!加班) + Val(Rs!事假) + Val(Rs!病假) + Val(Rs!产停) + Val(Rs!婚丧假) + Val(Rs!公假) + Val(Rs!工伤) + Val(Rs!年公休) + Val(Rs!旷工) + Val(Rs!放假) + Val(Rs!调休) + Val(Rs!公出) + Val(Rs!休息)

If IsNull(abc) Or abc = 0 Then
Rs2(e) = d
Rs2.Update     '这里出现了错误【由于您和其他用户试图同时改变同一数据,导致microsoft jet 数据引擎停止进程】
                       '但是实际上并没有其他用户在使用(晚上下班后也有这样的问题),请帮我看看是什么问题,谢谢!
Else
Rs1.AddNew
Rs1("部门") = Rs2("部门")
Rs1("班组") = Rs2("班组")
Rs1("工种") = Rs2("工种")
Rs1("姓名") = Rs2("姓名")
Rs1("工号") = Rs2("工号")
Rs1("日期") = Rs2("日期")
Rs1("当前添加的类别") = e
Rs1("已考勤") = abc
Rs1.Update
End If
    Rs.MoveNext
    Rs2.MoveNext
End If
Next

[attach]49252[/attach]

作者: todaynew    时间: 2012-5-25 14:07
rs和rs2是一个玩意,直接用rs更新即可。
作者: kent_73    时间: 2012-5-25 15:06
todaynew 发表于 2012-5-25 14:07
rs和rs2是一个玩意,直接用rs更新即可。


改了以后,就这样了


[attach]49253[/attach]
作者: Henry D. Sy    时间: 2012-5-25 16:13
干嘛打开这么多记录集?
作者: kent_73    时间: 2012-5-25 16:40
Henry D. Sy 发表于 2012-5-25 16:13
干嘛打开这么多记录集?

呵呵,是写多了记录集,现在改成二个了
作者: kent_73    时间: 2012-5-25 16:40
Sql = "SELECT 部门,班组,工种,姓名,工号, 日期, 退社日期, 锁定, 白班, 加班, 事假, 病假, 产停, 婚丧假, 公假, 工伤, 年公休, 旷工, 放假, 调休, 公出, 休息 FROM Tb_考勤_员工出勤表" _
& " WHERE 工号='" & a & "' AND 日期 >= #" & b & "# And 日期 <=#" & c & "# AND 退社日期 Is Null AND 锁定=0;"

用这句代码建立了查询,在查询界面是可以新增和修改数据的。
作者: roych    时间: 2012-5-25 17:34
  1. Rs.Open Sql, mydb, adOpenStatic, adLockReadOnly
复制代码
只读的游标是没法更新的,请选择记录集的其它游标类型。
作者: LeeTien    时间: 2012-5-26 20:21
两个记录集操作一个数据源
肯定出问题
关闭一个再操作另外一个试试
作者: zq4320667    时间: 2012-5-27 13:19
楼主是vb做的吧?
作者: kent_73    时间: 2012-5-28 10:27
roych 发表于 2012-5-25 17:34
只读的游标是没法更新的,请选择记录集的其它游标类型。

谢谢,问题解决了




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3