Office中国论坛/Access中国论坛

标题: [求助]通过按钮事件删除多个表中的记录 [打印本页]

作者: Javana    时间: 2006-11-15 18:51
标题: [求助]通过按钮事件删除多个表中的记录
有多个表,其中关联的是"职工编号",要求在一个窗体的按钮中删除掉多个表中的记录.

按钮的代码如下:

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编辑过]


作者: wwwwa    时间: 2006-11-15 19:26
设置级联删除即可,Delete * FROM 员工档案表 WHERE 职工编号 = 职工编号
作者: Javana    时间: 2006-11-15 22:39
谢谢楼上的朋友.级联删除在关系中我设定不了

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

后来我把上面的语句改为

    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"

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

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

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

指向 ".VALUES "
作者: wwwwa    时间: 2006-11-16 00:16
如职工编号为字符型,如不是,则去掉单引号

DoCmd.RunSQL "Delete * FROM 员工档案表 WHERE 职工编号 = '" & 职工编号.VALUE & "'"
作者: Javana    时间: 2006-11-16 01:22
太感谢了!可以了,多谢WWWWA朋友!
作者: whltrr    时间: 2006-11-16 01:24
用这个试试, [职工编号] 是个文本控件吧

DoCmd.RunSQL "Delete * FROM 员工档案表 WHERE 职工编号 = '" & [职工编号] & "'"




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