Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

求教查询中where条件出错的问题

瘦子林某某  发表于:2019-01-24 10:58:20  
复制

想建立一个查询,显示复选框中选中的结果,代码如下:

SELECT 表1.*

from 表1

where

 ((Forms![窗体_主窗体].[Controls]![按钮_标前]) and  (isnull(表_项目列表.[投标时间])))

or
 ((Forms![窗体_主窗体].[Controls]![按钮_投标]) and (not isnull(表_项目列表.[投标时间])))
or
 ((Forms![窗体_主窗体].[Controls]![按钮_中标]) and (表_项目列表.[投标结果])= "中标")
or
 ((Forms![窗体_主窗体].[Controls]![按钮_失标]) and (表_项目列表.[投标结果])="失标")
or
 ((Forms![窗体_主窗体].[Controls]![按钮_流标]) and (表_项目列表.[投标结果])="流标")
or
 ((Forms![窗体_主窗体].[Controls]![按钮_安装完成]) and (not isnull(表_项目列表.[安装完成时间])))
or
 ((Forms![窗体_主窗体].[Controls]![按钮_调试完成]) and (not isnull(表_项目列表.[调试完成时间])))
or
 ((Forms![窗体_主窗体].[Controls]![按钮_质保完成]) and (not isnull(表_项目列表.[质保完成时间])))
)

昨天编出来的时候还能正常用,今天存盘再打开就出错了。是出错不是无结果,引用查询结果列表框的窗体,打开空白一片。

请问问题可能出在哪里?

所有按钮的缺省值都是:true

而且在这段代码后面再加一行 or true就不会出错了。


以上,致谢





 

Top
清风 发表于:2019-01-27 11:10:49
你的语法没看出问题,应该是括号用的不对

瘦子林某某 发表于:2019-01-30 08:47:01
不是括号问题,我后来尝试了建一个布尔值变量,添加在代码后面 or 布尔值,在打开窗体的时候赋值为true,需要查询的时候在赋值为false。就解决出错问题了。具体什么原因不清楚。怀疑打开窗体的时候无法调用到窗体内的某些数据,全部判定都是null所以报错。

chinasa 发表于:2019-01-30 09:17:54
最好的方法就是测试,你先不要用那么多的or,就用一个条件,如果没问题再逐步加条件。如果有问题,则在select语句前面加上个msgbox 条件语句,看看那个条件是为NULL还是TRUE。这样才可以逐步找到问题在哪里。

西出阳关无故人 发表于:2019-01-30 10:56:07
可能与这段代码的过程有关。尝试在open、load、current、或按钮的等事件中使用相同的代码,可能会有不同的结果。

总记录:4篇  页次:1/1 9 1 :