【发布时间】:2019-08-09 05:58:03
【问题描述】:
我有一个只有 1 个表的数据库,该表有 27 个以上的字段,并且并非所有字段都包含一个值(有些是空的)。我在执行多字段搜索的导航表单上有一个按钮(“搜索警报”),用户可以搜索 6 个不同的字段,用户可以同时使用 1 到 6 个条件(请参阅照片)。 .
例如,我可以仅按名称或名称和标签等进行搜索,并且我希望显示包含这些项目的所有记录,即使该记录中还有其他一些缺失字段。
以下是单击按钮时执行的代码。
varI = DLookup("Tag", "tblAlarms", "Tag Like '*" & Forms![frmHomePage]!inputTag & "*'")
varJ = DLookup("Name", "tblAlarms", "Name Like '*" & Forms![frmHomePage]!inputName & "*'")
varX = DLookup("Plant_Identification_Number", "tblAlarms", "Plant_Identification_Number Like '*" & Forms![frmHomePage]!inputPlantID & "*'")
varY = DLookup("Priority", "tblAlarms", "Priority Like '*" & Forms![frmHomePage]!inputPriority & "*'")
varZ = DLookup("Group", "tblAlarms", "Group Like '*" & Forms![frmHomePage]!inputGroup & "*'")
varK = DLookup("Classification", "tblAlarms", "Classification Like '*" & Forms![frmHomePage]!inputClass & "*'")
If Not IsNull(varI) And Not IsNull(varJ) And Not IsNull(varX) And Not IsNull(varY) And Not IsNull(varZ) And Not IsNull(varK) Then
DoCmd.OpenForm "frmAlarms", acNormal, "", "Tag Like ""*"" & [Forms]![frmHomePage]![inputTag] & ""*"" and Name Like ""*"" & [Forms]![frmHomePage]![inputName] & ""*"" and Plant_Identification_Number Like ""*"" & Forms![frmHomePage]!inputPlantID & ""*"" and Priority Like ""*"" & Forms![frmHomePage]!inputPriority & ""*"" and Group Like ""*"" & Forms![frmHomePage]!inputGroup & ""*"" and Classification Like ""*"" & Forms![frmHomePage]!inputClass & ""*""", acEdit, acNormal
DoCmd.Close acForm, "frmHomePage", acSaveNo
Me.Visible = False
Else
MsgBox "0 Search Results Were Found!"
Me.Visible = True
End If
我的问题是当数据表中缺少字段时,我无法运行查询/搜索(DoCmd.OpenForm 行)。
我已尝试删除“If”条件,以便无论字段是否丢失,它都会运行命令,但是除非记录包含所有字段中的数据,否则 ms 访问不会返回任何记录。有没有解决的办法?
我想到了以下几点:
使用“If”语句执行不同的查询,具体取决于已输入的数据,但需要从 720 种不同的组合中搜索 6 个不同的字段。
根据搜索输入构建查询字符串(代码中的 DoCmd.OpenForm 行),但我想不出一种方法让代码知道何时在其间放置“&”。
尝试让按钮只运行查询,但问题仍然是,如果记录中缺少字段,即使搜索条件匹配,该记录也不会显示。例如,如果我搜索标签 = 1234 的所有记录,这些记录只会显示该记录中的所有 27+ 字段是否都包含值。
可能会在所有空白字段中添加“n/a”,但有没有办法自动执行此操作?由于该数据库有一个用户输入部分,如果它会在创建新记录时自动用“n/a”填充空字段,那将是理想的。虽然这会使表格/数据看起来有点凌乱,但更喜欢搜索查询和缺少字段的方法。
任何帮助将不胜感激!提前致谢。
【问题讨论】: