Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[出错]bof或EOF中有一个是真或者当前的记录被删除

yaxun  发表于:2008-06-24 14:35:42  
复制

bof或EOF中有一个是"真,或者当前的记录被删除,所需的操作要求一当前的记录.

Private Sub 过数离职员工资料_Click()
On Error GoTo ERR_过数离职员工资料_Click
Dim I As Integer '循环变量
Dim STEMP As String '临时变量
Dim RS As New ADODB.Recordset '定义数组变量
Dim RS1 As New ADODB.Recordset
Dim RS2 As New ADODB.Recordset
'打开数据表
STEMP = "SELECT * FROM 离职表"
RS.Open STEMP, CurrentProject.Connection, adOpenKeyset, adLockOptimistic '打开离职表数据集
STEMP = "SELECT * FROM 离职登记表"
RS1.Open STEMP, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
STEMP = "SELECT * FROM 员工基本资料"
RS2.Open STEMP, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
If RS.RecordCount <= 0 Then
MsgBox "目前记录为空,无离职员工可过数!", vbOKOnly, "离职员工不能为空!"
Exit Sub
Else
RS.MoveFirst

For I = 1 To RS.RecordCount
RS1.AddNew
RS1("员工ID") = RS("员工ID")
RS1("部门ID") = RS("部门ID")
RS1("职务") = RS("职务")
RS1("姓名") = RS("姓名")
RS1("身份证ID") = RS("身份证ID")
RS1("性别") = RS("性别")
RS1("学历") = RS("学历")
RS1("入职日期") = RS("入职日期")
RS1("基本工资") = RS("基本工资")
RS1("家庭地址") = RS("家庭地址")
RS1("备注") = RS("备注")
RS1.Update
RS.MoveNext
Next I
STEMP = "DELETE * FROM 离职表"
DoCmd.RunSQL STEMP
'--------------------删除员工基本资料中的与离职员工临表中对应的员工资料
Do While Not (RS2.EOF)
If RS2("员工ID") = RS("员工ID") Then

RS.MoveFirst
For I = 1 To RS2.RecordCount
RS2.Delete 1
RS2.MoveNext
RS2.Update
Next I

End If
Loop
End If
Me.离职表_子窗体.Requery

MsgBox "过数成功", vbOKOnly, "过数成功"
EXIT_过数离职员工资料_Click:
Exit Sub
ERR_过数离职员工资料_Click:
MsgBox Err.Description
Resume EXIT_过数离职员工资料_Click
End Sub

 

Top
pc高手 发表于:2008-06-24 15:22:20
不知道, 什么意思?

yaxun 发表于:2008-06-24 16:03:28
错误提示

pc高手 发表于:2008-06-24 16:16:28

如果, 你要问问题, 就用语言描述详细一下, 否则别人不知道你是什么意思!

 

EOF , BOF :  都是记录指针移动时出现的错误。

在使用 DO WHILE 循环语句时, 记录特别容易出现 EOF 错误, 所以你在写代码时特别加小心。

 

看你的代码, 的确很费劲, 总觉得思路又问题。

 

能否, 把你的需求描述一下(即: 业务上时什么需求, 要解决什么问题), 我们替你些一段代码。 如何?

 

如果, 你非要用你的源代码, 解决方法: 你自己,用代码逐行跟踪, 找出代码出错在哪行, 再寻求原因,以便解决。

 

你现在的这种描述, 别人都不愿伸手解决。  不是技术上有难度, 只是费点劲儿, 需要跟踪代码才能找出错误。



yaxun 发表于:2008-06-24 16:38:00

不好意思,我上传不了文件^_^

我的目的是:

如有两个表,  个是员工离职表, 一个是员工基本资料表

当在离职表中添加一个记录时,系统自动删除员工基本资料表中与之相对应的记录

(批量添加)

问题是现在册除不了员工基资料表中的记录.

请帮忙.

 

 



pc高手 发表于:2008-06-24 16:48:39

好了! 你的(需求)问题很清楚了。  也很简单!  那么, 根本就不用你现在的思路去解决问题。 你现在的思路时画蛇添足, 简单的问题复杂化了。 除非, 你非得要这么去做, 就是要学习用复杂的方法如何来解决简单的问题。

解决方法(之一): 

在目前的“员工基本资料表” 中添加一个字段:“离职否” , 如果此人离职就是“YES”。  查询过滤都很简单, 平常应用时, 都是非离职人员, 用一个查询语句就行了。

 

解决方法(之二):  设立2个表, 结构完全相同, 一个是在职表, 一个是离职表, 记录的导入, 导出就行了。

 

这两种方法都可以做到成批人员的批量操作。

 

 

 



pc高手 发表于:2008-06-24 16:52:34
在实际应用中, 员工信息表里面的(记录)内容是不能删除的!!! 历史记录(信息) 要永久保留,留有历史痕迹。 只不过要有一个状态字段: 在职,离职,脱产学习,停薪留职, 等等根据企业内部的需求。

yaxun 发表于:2008-06-24 17:07:28

毛塞頓開.謝謝,請你有這方面的實列嗎?,初學者不熟,^_^

 

謝謝



yaxun 发表于:2008-06-24 17:24:47
能加你QQ吗?

符鸿敏 发表于:2008-06-24 22:33:51
哪需要那么复杂的代码!只要建一个符合离职表的选择查询和删除查询,然后在删除员工的命令按钮的单击事件中写下运行这两个查询就OK了!如还不明白的话,就和我QQ联系,传个附件给我帮你弄弄看。


总记录:9篇  页次:1/1 9 1 :