设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1386|回复: 7
打印 上一主题 下一主题

[Access本身] [求助]通过按钮事件删除多个表中的记录

[复制链接]
跳转到指定楼层
1#
发表于 2006-11-15 18:51:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有多个表,其中关联的是"职工编号",要求在一个窗体的按钮中删除掉多个表中的记录.

按钮的代码如下:

Private Sub 删除_Click()
On Error GoTo Err_删除_Click


    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
   
    DoCmd.RunSQL "Delete * FROM 员工档案表,公物配用,合同管理,备注表,工作变更,家庭成员,简历表,奖惩记录,离退职管理,培训记录 WHERE 职工编号 = 职工编号"

Exit_删除_Click:
    Exit Sub

Err_删除_Click:
    MsgBox err.Description
    Resume Exit_删除_Click
   
End Sub

不知为何不能成功呢...提示:"指定要删除记录的表"

请大家指点迷津,多谢!!!

[此贴子已经被作者于2006-11-15 10:51:08编辑过]

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2006-11-15 19:26:00 | 只看该作者
设置级联删除即可,Delete * FROM 员工档案表 WHERE 职工编号 = 职工编号
3#
 楼主| 发表于 2006-11-15 22:39:00 | 只看该作者
谢谢楼上的朋友.级联删除在关系中我设定不了

主要是员工档案表做为主表,里面没有薪酬这一字段,估计是因为这个违反了参照完整性规则.

后来我把上面的语句改为

    DoCmd.RunSQL "Delete * FROM 员工档案表 WHERE 职工编号 = 职工编号"
    DoCmd.RunSQL "Delete * FROM 公物配用 WHERE 职工编号 = 职工编号"
    DoCmd.RunSQL "Delete * FROM 合同管理 WHERE 职工编号 = 职工编号"
    DoCmd.RunSQL "Delete * FROM 备注表 WHERE 职工编号 = 职工编号"
    DoCmd.RunSQL "Delete * FROM 工作变更 WHERE 职工编号 = 职工编号"
    DoCmd.RunSQL "Delete * FROM 家庭成员 WHERE 职工编号 = 职工编号"
    DoCmd.RunSQL "Delete * FROM 奖惩记录 WHERE 职工编号 = 职工编号"
    DoCmd.RunSQL "Delete * FROM 离退职管理 WHERE 职工编号 = 职工编号"
    DoCmd.RunSQL "Delete * FROM 培训记录 WHERE 职工编号 = 职工编号"

后一下把我的所有记录全删了....

想想好像是写错了,后来改成

    DoCmd.RunSQL "Delete * FROM 员工档案表 WHERE 职工编号 = 职工编号.Text"
    DoCmd.RunSQL "Delete * FROM 公物配用 WHERE 职工编号 = 职工编号.Text"
    DoCmd.RunSQL "Delete * FROM 合同管理 WHERE 职工编号 = 职工编号.Text"
    DoCmd.RunSQL "Delete * FROM 备注表 WHERE 职工编号 = 职工编号.Text"
    DoCmd.RunSQL "Delete * FROM 工作变更 WHERE 职工编号 = 职工编号.Text"
    DoCmd.RunSQL "Delete * FROM 家庭成员 WHERE 职工编号 = 职工编号.Text"
    DoCmd.RunSQL "Delete * FROM 奖惩记录 WHERE 职工编号 = 职工编号.Text"
    DoCmd.RunSQL "Delete * FROM 离退职管理 WHERE 职工编号 = 职工编号.Text"
    DoCmd.RunSQL "Delete * FROM 培训记录 WHERE 职工编号 = 职工编号.Text"

但提示,"除非控件获得焦点,否则不能引用该控件的属性或方法"

看来是"职工编号"这个控件没有获得焦点的原因.这该怎么办呀...
4#
发表于 2006-11-15 23:02:00 | 只看该作者
DoCmd.RunSQL "Delete * FROM 员工档案表 WHERE 职工编号 = '" & 职工编号.VALUES & "'"
5#
 楼主| 发表于 2006-11-16 00:09:00 | 只看该作者
谢谢.

不过还是不行,提示"方法和数据成员未找到"

指向 ".VALUES "
6#
发表于 2006-11-16 00:16:00 | 只看该作者
如职工编号为字符型,如不是,则去掉单引号

DoCmd.RunSQL "Delete * FROM 员工档案表 WHERE 职工编号 = '" & 职工编号.VALUE & "'"
7#
 楼主| 发表于 2006-11-16 01:22:00 | 只看该作者
太感谢了!可以了,多谢WWWWA朋友!
8#
发表于 2006-11-16 01:24:00 | 只看该作者
用这个试试, [职工编号] 是个文本控件吧

DoCmd.RunSQL "Delete * FROM 员工档案表 WHERE 职工编号 = '" & [职工编号] & "'"
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-31 14:47 , Processed in 0.106219 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表