vba - 我可以在动态查询中使用默认值来避免向用户查询参数吗?
问题描述
我为生成多个交叉表的用户创建了一个按钮,然后将交叉表组合成一个自动导出到 Excel 的表。不幸的是,由于数据的原因,有时交叉表具有不同的列数(基于数据的正常变化)。因此,当代码尝试从不存在的字段中进行选择时,有时会向用户查询参数(针对 12 个类别的 14 种缺陷类型最多 168 次)。有没有办法让代码使用默认值来代替查询用户?
这是我用来合并两个交叉表的 SQL 代码(稍微缩写),但我真的很希望这样做而不会打扰用户。具体来说,如果 tblMajorDefectsCrossTabX 没有 [Major 1] 的字段,我如何使其默认为零或空值,而不是打扰用户?
mySql = "SELECT tblMajorDefectsCrossTabX.[Contractor Dept] AS [Contractor Dept], " & _
"tblMajorDefectsCrossTabX.[Major 1], tblMajorDefectsCrossTabX.[Major 7], " & _
"tblMinorDefectsCrossTabX.[Minor 1], tblMinorDefectsCrossTabX.[Minor 7] " & _
"FROM tblMajorDefectsCrossTabX LEFT JOIN tblMinorDefectsCrossTabX " & _
"ON tblMajorDefectsCrossTabX.[Contractor Dept] = tblMinorDefectsCrossTabX.[Contractor Dept] " & _
"UNION " & _
"SELECT tblMinorDefectsCrossTabX.[Contractor Dept] AS [Contractor Dept], " & _
"tblMajorDefectsCrossTabX.[Major 1], tblMajorDefectsCrossTabX.[Major 7], " & _
"tblMinorDefectsCrossTabX.[Minor 1], tblMinorDefectsCrossTabX.[Minor 7] " & _
"FROM tblMajorDefectsCrossTabX RIGHT JOIN tblMinorDefectsCrossTabX " & _
"ON tblMajorDefectsCrossTabX.[Contractor Dept] = tblMinorDefectsCrossTabX.[Contractor Dept];"
On Error Resume Next
db.QueryDefs.Delete "qryX" 'Remove temporary query if exists
Set QD = db.CreateQueryDef("qryX", mySql) 'create temporary query
DoCmd.RunSQL "SELECT * INTO tblMergeDefectCrossTabX FROM qryX;"
解决方案
推荐阅读
- reactjs - 如何在自动完成材质 UI 中呈现自定义 jsx 元素
- python - Django 静态视频无法在 Chrome 或 Edge 上播放
- android - Kotlin 1.5.20 打破了 dagger/moshi 的 kapt
- c++ - spidev ioctl 返回无效参数错误
- azure - 在 Azure DevOps 参数化中使用 assignable_scope 构建 azurerm_role_definition
- postgresql - postgres 选择 nextval 会导致一些性能问题吗?
- go - flag.Args()后如何访问
- django-models - 如何计算月份有可用位置的不同imei
- c - 将 void* 复制到数组中的某个位置,C
- java - 如何用面料制作不死图腾之类的物品?