MS Access连续表单:如何按标准数字格式筛选成本范围记录?
Access查询:修复成本范围筛选失效问题
库存表结构
| product_group | dimension | cost |
|---|---|---|
| TI | 8x4 | 5000 |
| WN | 2000 | |
| YS | 7x9 | 25000 |
| ST | 10x15 | 8000 |
问题场景
已创建查询stocksListQ,并基于该查询制作表单findStocks,表单内添加两个文本框:
CostMinSearch:默认值0,用于输入成本下限CostMaxSearch:默认值9,999,999,用于输入成本上限
当前给cost字段设置的筛选条件为:
Between [Forms]![findStocks]![CostMinSearch] And [Forms]![findStocks]![CostMaxSearch]
但无论在文本框输入什么值,查询都会返回所有记录,无法正确筛选成本范围内的条目。
修复方案
问题根源是默认值9,999,999带逗号,属于文本格式,和数字类型的cost字段比较时出现类型不匹配,导致筛选条件失效。将cost字段的条件修改为以下SQL语句即可:
Between Val(Nz([Forms]![findStocks]![CostMinSearch], 0)) And Val(Nz([Forms]![findStocks]![CostMaxSearch], 9999999))
语句说明
Nz():若文本框为空,自动用括号内的默认值替代(下限用0,上限用9999999)Val():将文本框输入内容强制转换为数字类型,确保和cost字段(数字类型)正确比较
测试验证
- 当
CostMinSearch输入3000、CostMaxSearch输入9000时,查询仅返回TI、ST两条记录 - 当
CostMinSearch输入1000、CostMaxSearch输入3000时,查询仅返回WN一条记录
内容的提问来源于stack exchange,提问作者Max Kentwell
相关产品推荐
相关产品推荐

