Access 2016用Like模糊匹配跨表查询不同格式发票号的方法咨询
Access 2016 双表发票前缀匹配查询设置方案
前提确认
先确认你用到的几个对象的实际名称,以下示例中使用的占位符可自行替换:
- 输入前缀的窗体名称:
frm_InvoiceQuery - 窗体上的输入文本框控件名称:
txt_InvoicePrefix - 存储供应商发票的表名:
供应商表 - 存储内部唯一发票号的表名:
内部表
方案1:查询设计视图设置(适合需要关联对比两张表记录的场景)
- 打开查询设计视图,添加
供应商表和内部表 - 建立两表的关联规则:右键点击两表的关联线(没有的话拖动
供应商表.[Invoice Number]到内部表.[Invoice Number]创建),选择「联接属性」,设置为左联接或右联接(根据你需要保留哪张表的全部匹配记录),关联条件替换为:供应商表.[Invoice Number] = Left(内部表.[Invoice Number], InStr(内部表.[Invoice Number], "_") - 1) - 将两张表需要展示的字段拖到查询字段行,在任意一张表的
Invoice Number字段的「条件」行输入以下内容:Like [Forms]![frm_InvoiceQuery]![txt_InvoicePrefix] & "*"
方案2:SQL联合查询设置(适合需要合并展示两张表所有匹配记录的场景)
直接打开查询的SQL视图,粘贴以下语句并修改占位符即可:
SELECT "供应商侧" AS 记录来源, [Invoice Number], 其他字段1, 其他字段2 FROM 供应商表 WHERE [Invoice Number] Like [Forms]![frm_InvoiceQuery]![txt_InvoicePrefix] & "*" UNION ALL SELECT "内部侧" AS 记录来源, [Invoice Number], 其他字段1, 其他字段2 FROM 内部表 WHERE [Invoice Number] Like [Forms]![frm_InvoiceQuery]![txt_InvoicePrefix] & "*"
注意事项
- 运行查询时需要保证绑定的窗体处于打开状态,否则Access会自动弹出参数输入框要求输入发票前缀
- 如果不需要区分记录来源,去掉
UNION ALL上方和下方SELECT语句里的"供应商侧" AS 记录来源、"内部侧" AS 记录来源部分即可 - 确保两张表的
其他字段数量、数据类型一一对应,否则联合查询会报错
内容的提问来源于stack exchange,提问作者Tbure90
相关产品推荐
相关产品推荐

