Access交流中心

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

一直没人能帮我解决的问题

毛毛的喜洋洋  发表于:2011-12-21 08:56:04  
复制

在窗体中录入数据的过程中,其中一个控件(身份证号)设置检验重复数据的功能,当发现数据重复后,会自动跳转到重复的数据,并将原来正在录入的那条数据删除。以下代码可以检验重复数据,但转到前面的记录后,删除的是当前的记录,而不是删原最后输入的一条记录,应该如何修改??

Private Sub 身份证号_LostFocus()
  If DCount("[身份证号]", "台账", "[身份证号]='" & Me.身份证号 & "'") > 0 Then
  MsgBox "身份证号码重复," & _
  "请核对是否重复建档!", vbCritical, "警告"
  DoCmd.FindRecord [身份证号]
  DoCmd.RunSQL "DELETE 台账.* FROM 台账 where (((台账.编号)=[Forms]![台账]![编号]));", -1
  End If
End Sub

附件在这 http://www.accessoft.com/userfiles/macyoung/20111216111103.rar

 

Top
jia 发表于:2011-12-21 10:37:01

用以下代码可达到你的要求

Private Sub 身份证号_BeforeUpdate(Cancel As Integer)
     d = DLookup("身份证号", "台账", "身份证号 = " & Me![身份证号] & "")
 

    If IsNull(d) = False Then
        MsgBox "身份证号输入重复," & _
               "请核对后重新输入身份证号", vbCritical, "警告"
                Me.Form.Undo
       
        Exit Sub
    End If
End Sub



毛毛的喜洋洋 发表于:2011-12-23 15:26:11
请看附件,我要删除的不单单是身份证这个文本框,前面还有姓名,日期等等,我想删除的是一整条的记录啊

浪淘沙 发表于:2011-12-25 00:08:56

用下面的代码试试,根据需要放到你认为合适的事件里

 

Private Sub 身份证号_AfterUpdate()
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Dim rst As Object
Dim strBookmark As String
Set rst = Forms!台账.Recordset
rst.Bookmark = Forms!台账.Bookmark
If DCount("[身份证号]", "台账", "[身份证号]='" & Me.身份证号 & "'") >= 2 Then
        MsgBox "身份证号码重复," & _
               "请核对是否重复建档!", vbCritical, "警告"
rst.Delete
End If
End Sub

点击下载此附件

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