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 " & _ "IsNull([Business Name])" 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 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代码找空白记录挂断的主要内容,如果未能解决你的问题,请参考以下文章