首页 > 解决方案 > 我可以在动态查询中使用默认值来避免向用户查询参数吗?

问题描述

我为生成多个交叉表的用户创建了一个按钮,然后将交叉表组合成一个自动导出到 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;"

标签: vbams-accessparametersdefault

解决方案


推荐阅读