Access多表查询构建求助:按用户信息检索跨系统权限记录
Access多表用户查询可行方案
优先方案:联合查询+参数查询(纯内置功能)
这是最直接的内置方案,无需VBA或宏,实时获取最新数据:
创建联合查询,统一多表结构并添加计算机标识
打开Access查询设计视图,切换到SQL视图,输入以下SQL(根据实际表字段调整):SELECT 'PC1' AS 计算机名称, 姓氏, 名字, 权限等级, 其他字段 FROM PC1 UNION ALL SELECT 'PC2' AS 计算机名称, 姓氏, 名字, 权限等级, 其他字段 FROM PC2 UNION ALL SELECT 'PC3' AS 计算机名称, 姓氏, 名字, 权限等级, 其他字段 FROM PC3UNION ALL会保留所有匹配记录(包括重复条目),如果需要去重可替换为UNION- 确保每个SELECT语句的字段数量、类型完全一致
将这个查询保存为qry_全PC用户汇总
创建带输入提示的参数查询
基于上面的汇总查询新建查询,SQL视图中输入:SELECT * FROM qry_全PC用户汇总 WHERE 姓氏 = [请输入用户姓氏:] AND 名字 = [请输入用户名字:]运行该查询时,Access会自动弹出两个输入框,用户输入信息后即可返回所有匹配的记录,每条记录前都会带对应的计算机名称。
优化方案:表单驱动查询(更友好的交互)
如果需要更直观的输入界面,可搭配表单实现:
- 创建一个表单
frm_用户查询,添加两个文本框txt_姓氏、txt_名字,以及一个“查询”按钮 - 修改参数查询的条件为绑定表单字段:
SELECT * FROM qry_全PC用户汇总 WHERE 姓氏 = Forms!frm_用户查询!txt_姓氏 AND 名字 = Forms!frm_用户查询!txt_名字 - 给按钮添加“打开查询”的宏操作,用户在表单输入后点击按钮即可直接查看结果
备选方案:隐藏表汇总查询
如果你的场景允许非实时数据,可采用你之前考虑的隐藏表方案:
- 创建隐藏表
tbl_用户汇总,字段与PC表一致,额外添加计算机名称字段 - 创建追加查询,将各PC表的数据批量追加到汇总表:
为每个PC表单独创建追加查询,或用UNION ALL合并为一个追加查询INSERT INTO tbl_用户汇总 (计算机名称, 姓氏, 名字, 权限等级) SELECT 'PC1', 姓氏, 名字, 权限等级 FROM PC1 - 用宏或VBA设置定时执行追加查询,保持汇总表数据更新,之后直接在汇总表上创建参数查询即可
内容的提问来源于stack exchange,提问作者ADS1979
相关产品推荐
相关产品推荐

