【发布时间】:2020-11-18 08:36:51
【问题描述】:
我创建了一个按关键字搜索数据的表单,并将这个 vba 代码分配给按钮的点击事件:
Dim sql As String
sql = "SELECT MD.[id], MD.[status], MD.[milnum], MD.[sname], MD.[mother], MD.[grade], MD.[gradetype], MD.[spcode], MD.[spes], MD.[unit] FROM MD WHERE (MD.[status] LIKE '*" & Me.tstate & "*') AND (MD.[milnum] LIKE '*" & Me.tnumber & "*') AND (MD.[sname] LIKE '*" & Me.tname & "*') AND (MD.[mother] LIKE '*" & Me.tmother & "*') AND (MD.[grade] LIKE '*" & Me.tgrade & "*') AND (MD.[gradetype] LIKE '*" & Me.ttype & "*') AND (MD.[spcode] LIKE '*" & Me.tcode & "*') AND (MD.[spes] LIKE '*" & Me.tspes & "*') AND (MD.[unit] LIKE '*" & Me.tunit & "*')order by MD.[id]"
Me.MD_Sheet.Form.RecordSource = sql
Me.MD_Sheet.Form.Requery
但是当我进行搜索时,查询不会带来所有结果,例如,当我在 textboxex 中什么都不写时,它应该带来表 MD 中的所有记录,但它没有,它只是带来一些记录。
我创建另一个按钮并使用新的 sql 语句将相同的代码分配给“点击事件”:
Dim sql As String
sql = "SELECT MD.[id], MD.[status], MD.[milnum], MD.[sname], MD.[mother], MD.[grade], MD.[gradetype], MD.[spcode], MD.[spes], MD.[unit] FROM MD"
Me.MD_Sheet.Form.RecordSource = sql
Me.MD_Sheet.Form.Requery
然后它会带来所有记录。
MD表中的记录大约有25000条记录。
【问题讨论】:
-
是sql查询语句长度影响结果。我使用multi like子句。
-
只保留一个条件为空不会带来所有记录。其他条件仍然适用并且记录被过滤。我更喜欢仅使用具有输入的控件来构建 VBA 过滤条件。评论allenbrowne.com/ser-62.html
-
@June7 抱歉,但我编辑了问题并忘记了其余部分进行编辑。我将所有条件都留空。
-
它应该带来表 MD 中的所有记录 - 它会,但前提是该字段包含一个值; Null 被排除在外。
-
@Gustav 如果字段为 Null,如何解决?
标签: database forms ms-access search