北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |
On Error GoTo ErrorHandler Dim strMsg1, strMsg2 As String Dim intContactsCount As Integer DoCmd.SetWarnings False If Me.sfrList.Form.CurrentRecord < 1 Then Exit Sub End If Me.sfrList.SetFocus RunCommand acCmdSelectRecord strMsg1 = "确定要刪除[" & Me.sfrList![客户] & "]吗?" If MsgBoxex(strMsg1, vbQuestion + vbOKCancel) = vbCancel Then Exit Sub End If intContactsCount = DCount("[联系人ID]", "[TblClientContacts]", "[客户ID]='" & Me.sfrList![客户ID] & "'") If intContactsCount > 0 Then strMsg2 = "客户[" & Me.sfrList![客户] & "]包括[" & intContactsCount & "]个联系人,确定将他们都删除吗?" If MsgBoxex(strMsg2, vbQuestion + vbOKCancel) = vbCancel Then Exit Sub Else ' DAORunSQL ("DELETE FROM [TblClientContacts] WHERE [客户ID]=" & SQLText(Me.sfrList![客户ID])) ' DAORunSQL ("DELETE FROM [TblClient] WHERE [客户ID]=" & SQLText(Me.sfrList![客户ID])) DoCmd.RunSQL "DELETE FROM [TblClientContacts] WHERE [客户ID]=" & SQLText(Me.sfrList![客户ID]) DoCmd.RunSQL "DELETE FROM [TblClient] WHERE [客户ID]=" & SQLText(Me.sfrList![客户ID]) End If Else 'DAORunSQL ("DELETE FROM [TblClient] WHERE [客户ID]=" & SQLText(Me.sfrList![客户ID])) DoCmd.RunSQL "DELETE FROM [TblClient] WHERE [客户ID]=" & SQLText(Me.sfrList![客户ID]) End If Me.RefreshDataList Me.btnDelete.SetFocus EXITHERE: DoCmd.SetWarnings True Exit Sub ErrorHandler: MsgBoxex Err.Description, vbCritical Resume EXITHERE End Sub
上面是一个删除按钮的代码,一个“客户”表,一个“联系人”表,客户和联系人分是都可能与“订单”表有一对多的关系。
碰到的问题:按删除后,程序会将客户的联系人删除(只能删除掉那此不存在于订单表中的,且不会出错所以错误处理语句捕不到),程序同时还会试着删除客户,也因客户在其它表中有关联记录,删不掉,也无提示。结果是此客户下的部分联系人被删除掉了,其余部分删不掉,用户也不知道原因。
想实现的效果:1)在执行删除动作之前检查联系人和/或客户是否在其它表中有相关记录,给出提示有关联的记录将无法删除;或者 2)当出现删除不能彻底删除所有期望的记录时就一条都不要删,给出提示。
谢谢!