You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:在SQL查询中使用变量实现媒体项全选的解决方案

解决方案

方法1:修改MyKeus函数,按需返回筛选逻辑

直接在函数内判断输入值,返回对应条件表达式,同时用Eval()执行该表达式:

步骤1:更新VBA函数

Public Keus As String
Function MyKeus() As String
    If Keus = ">0" Then
        ' 返回永真条件,匹配所有记录
        MyKeus = "1=1"
    Else
        ' 返回原匹配逻辑
        MyKeus = "LPofCD.LPofCD = " & Keus
    End If
End Function

步骤2:修改查询的WHERE子句

替换原有WHERE语句为:

WHERE Eval(MyKeus())

当Keus设为">0"时,函数返回1=1,所有记录都会被选中;设为1/2时,返回对应匹配条件,筛选指定媒体。


方法2:直接在SQL中处理特殊情况(无需改动函数)

跳过VBA函数,直接在查询的WHERE子句里判断表单控件值:

WHERE 
    ([Forms]![Output_Catalog]![Kies_Medium] = ">0" 
    OR LPofCD.LPofCD = [Forms]![Output_Catalog]![Kies_Medium])

选择">0"时,OR左侧条件成立,所有记录被选中;否则匹配对应LPofCD值的记录。


方法3:优化函数返回值,在WHERE中做判断

保留原有函数结构,返回特殊标记用于筛选逻辑:

步骤1:更新VBA函数

Public Keus As String
Function MyKeus() As Variant
    If Keus = ">0" Then
        ' 返回Null作为全选标记
        MyKeus = Null
    Else
        ' 转换为数值类型返回
        MyKeus = Val(Keus)
    End If
End Function

步骤2:修改查询的WHERE子句

WHERE 
    (MyKeus() IS NULL 
    OR LPofCD.LPofCD = MyKeus())

函数返回Null时,OR左侧条件成立,选中所有记录;否则匹配对应数值的媒体项。

内容的提问来源于stack exchange,提问作者W.J. de Zwart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 11:35:30