database - 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 条记录。
解决方案
尝试应用Nz,不快但简单:
AND (Nz(MD.[spcode]) LIKE '*" & Me.tcode & "*')
推荐阅读
- grpc - 我应该在 gRPC Java 中重用 StreamObservers 吗?
- javascript - 使用 RouteComponentProps 时使类型可选 - 由于错误:类型...缺少类型“...”中的以下属性:位置,匹配(2739)
- fft - 我可以动态创建 FFTW 变量吗?
- visual-studio-code - 如何在 VS Code 的资源管理器中显示 git 更改?
- apache-spark-mllib - 为什么 sparkml 随机森林分类器不支持 maxBins < 总分类值数?
- laravel - laravel 电子邮件模板上的图标
- php - 当我在 laravel 控制器中执行此查询时,我在 commune2 中有一个空结果
- python - 我必须开发一个函数,按人声数量升序对字符串列表进行排序,如果有平局,则按第一个人声
- c++ - 我的可变参数模板构造函数隐藏了复制构造函数,防止类被复制
- java - 必须为状态设计模式选择目的地