【问题标题】:delete duplicate records from query vba从查询 vba 中删除重复记录
【发布时间】:2015-09-07 02:28:13
【问题描述】:

我已经为重复记录构建了一个查询。我需要运行一些 VBA 代码来检查记录是否已经在表中(查询)。如果是这样,我需要删除最后一条记录。

我的表单由一个带有值的按钮组成,因此当您单击该按钮时,数据会插入到表格中

Dim qry As QueryDef
Set qry = CurrentDb.QueryDefs("duplicate records")
'which method do i use to see if the query got duplicate record'

With rstCategories
.MoveLast 0
End With
With rstCategories
rstCategories.Delete
End With

MsgBox "The problem already reported before!"

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    我要做的是在您的表上运行一个快速查询:

    Dim db as Database
    Dim rec as Recordset
    
    Set db = CurrentDB
    Set rec = db.OpenRecordset ("SELECT * FROM MyTable WHERE MyValue = '" & Me.MyValue & "'")
    
    If rec.EOF = true then
      'No match found, so the value isn't in the table.  Add it.
    Else
      'Match found.  This value is already in the table.
      MsgBox "This value is already in the table"
    End If
    

    【讨论】:

    • 感谢您的回复。让我再解释一下。我在 access 2013 中使用了内置的重复记录查询,并向查询添加了一些条件,仅显示最近 7 天的记录。现在,如果我使用表,我将不得不使用“dcount”,我的查询有 5 个字段,所以我只想“暗淡”我的查询并使用“如果”“添加新记录”然后删除它
    • 您可以编辑 OpenRecordset 并添加日期匹配项吗?比如,"SELECT * FROM MyTable WHERE MyValue = '" & Me.MyValue & "' AND MyDateField >= #" & DateAdd('d', -7, Now()) & "#"
    • 这段代码会很麻烦,因为我必须声明每个“文本字段为”并使用 & 和 & 和 & 相信我我有这段代码并且有很多程序要做。请只是"open query as dao" 并输入 "if" 方法来查看查询中是否有新记录 "then" move last delete" 我知道我为什么要使用这个方法
    【解决方案2】:

    好的,我解决了 我使用查找重复查询向导创建了一个查询。

    then i insert this code in "form close"
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Set db = Application.CurrentDb
    Set rs = db.OpenRecordset("qry_Duplicates")
    
    
    Do Until rs.EOF
    rs.MoveFirst
    rs.delete
    rs.Close
    Set rs = Nothing
    Set rs = db.OpenRecordset("qry_Duplicates")
    Loop
    

    这段代码删除整行

    【讨论】:

      猜你喜欢
      • 2021-07-12
      • 2020-09-02
      • 1970-01-01
      • 2015-04-04
      • 2016-11-30
      • 1970-01-01
      • 2016-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多