vba代码找空白记录挂断

Posted

技术标签:

【中文标题】vba代码找空白记录挂断【英文标题】:vba code to find a blank reord hanging up 【发布时间】:2016-09-27 19:25:03 【问题描述】:

我有一个拥有雇主信息的访问数据库。如姓名、地址、电话号码、联系人、业务类型等。有多个人输入数据,偶尔会有空白记录,因为有一个条目开始&没有完成。

我正在尝试使用 VBA 查找空白记录,以便在空白记录中输入新数据。这是当前代码。

Private Sub Command107_Click()

If DCount("*", "Blank Query") = "0" Then
    MsgBox ("No blank records found. Thank You!")
Else
    DoCmd.GoToRecord , , [Queries]![Blank Query2], offset:=1
End If

End Sub

当前如果有空白记录,它会挂起

DoCmd.GoToRecord , , [Queries]![Blank Query2], offset:=1

如果没有空白记录,它将运行并给出适当的响应。 我关心的唯一领域是姓名和地址。 理想情况下,我想让它进入空白记录。

【问题讨论】:

【参考方案1】:

您可以使用以下代码:

  Dim rst     As DAO.Recordset
  Dim strSQL  As String

  strSQL = "select * from tblContacts where " & _
           "IsNull([Name]) or IsNull(Address)"
  Set rst = CurrentDb.OpenRecordset(strSQL)

  If rst.RecordCount <> 0 Then
     Me.Recordset.FindFirst "id = " & rst!ID
  Else
     MsgBox "no blank reocrds found"
  End If

  rst.Close

【讨论】:

我必须对其进行一些修改才能使其运行。我发现地址需要 [],并且我不得不删除地址。这是工作代码Private Sub Command107_Click() Dim rst As DAO.Recordset Dim strSQL As String strSQL = "select * from Employer_List_Table where " &amp; _ "IsNull([Business Name])" Set rst = CurrentDb.OpenRecordset(strSQL) If rst.RecordCount &lt;&gt; 0 Then Me.Recordset.FindFirst "id = " &amp; rst!ID Else MsgBox "no blank reocrds found" End If rst.Close End Sub 我添加的唯一内容是向用户提供结果的音频指示是这段代码:Interaction.Beep 它位于Else 之后和MsgBox 之前【参考方案2】:

DoCmd.GoToRecord 仅在您的表单基于您的查询 [Blank Query2] 时才有效。 除此之外,你的语法不正确,指的是https://msdn.microsoft.com/en-us/library/office/ff194117.aspx

如果这个问题经常发生,我会创建一个基于 [Blank Query2] 的表单并将此表单添加到您的维护/应用程序管理前端(假设您已将数据库拆分为后端和前端)。

【讨论】:

它基于[Blank Query2]。数据库分为前端和后端,并添加到维护/应用程序管理前端。当我去查询时,它确实显示了正确的记录。 如果您已经有一个基于查询的表单,该查询检索所有应该修改的记录,您需要 VBA 做什么?您可以浏览表单中的所有记录并进行调整。【参考方案3】:

这将为您提供第一个不完整记录的 ID

 RecordID=Nz(DLookup("TablePrimaryKey","TableName","FieldThatCouldBEEmpty IS NULL"),0)

假设您的表具有正确的主键。如果没有,您可以请求任何可以帮助您识别记录的字段,只需确保将 0 更改为您正在查找的任何字段的适当“未找到记录”值。

这只会删除所有不完整的记录。

DoCmd.RunSQL "DELETE FROM TableName WHERE FieldThatCouldBEEmpty IS NULL"

【讨论】:

以上是关于vba代码找空白记录挂断的主要内容,如果未能解决你的问题,请参考以下文章

使用 vba 添加新记录时跳过空白字段

VBA 防止用户输入表单中出现空字段

Excel VBA - 如何选择范围向下到第一个空白单元格

使用 VBA 从主菜单打开一个表单,其中一个字段为空/空白

[No0000C1]Excel 删除空白行和空白列VBA代码

用于查找空白单元格的 VBA