首页 > 解决方案 > MS Access中的vba sql查询

问题描述

我创建了一个按关键字搜索数据的表单,并将此 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 条记录。

标签: databaseformsms-accesssearch

解决方案


尝试应用Nz,不快但简单:

AND (Nz(MD.[spcode]) LIKE '*" & Me.tcode & "*')

推荐阅读