Access交流中心

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

[多条件模糊综合查询]这个查询为什么不起作用...?

54.℡80後2oO  发表于:2014-01-15 14:06:12  
复制

 

 

 

 

如以上四张图示,我建立了一个以最下面那个窗体各控件为条件的综合查询,但是具体代码如下:为什么不起作用?有时可以查询到一条记录,当窗体中各控件为空时,日期一直是不为空的,查询不到记录..?请达人指点...?

===============================================================================================

SELECT 病人资料总表.病人ID, 病人资料总表.病人编号, 病人资料总表.性别, 病人资料总表.年龄, 病人资料总表.床号, 病人资料总表.送检日期, 病人资料总表.打印标记, 病人资料总表.检验日期, 病人资料总表.姓名, 病人资料总表.科别, 病人资料总表.送检医生, 病人资料总表.检验者, 病人资料总表.标本类型, 病人资料总表.项目名称, 病人资料总表.住院号, 病人资料总表.打印状态, 病人资料总表.备注, 病人资料总表.结果一, 病人资料总表.结果二, 病人资料总表.结果三, 病人资料总表.结果四, 病人资料总表.结果五, 病人资料总表.结果六, 病人资料总表.结果七, 病人资料总表.结果八, 病人资料总表.结果九, 病人资料总表.结果十, 病人资料总表.结果十一, 病人资料总表.结果十二, 病人资料总表.结果十三, 病人资料总表.结果十四, 病人资料总表.结果十五, 病人资料总表.结果十六, 病人资料总表.结果十七, 病人资料总表.结果十八, 病人资料总表.结果十九, 病人资料总表.结果二十, 病人资料总表.结果二十一, 病人资料总表.结果二十二, 病人资料总表.结果二十三, 病人资料总表.结果二十四, 病人资料总表.结果二十五, 病人资料总表.结果二十六, 病人资料总表.结果二十七, 病人资料总表.结果二十八, 病人资料总表.结果二十九, 病人资料总表.结果三十, 项目.缩写一, 项目.缩写二, 项目.缩写三, 项目.缩写四, 项目.缩写五, 项目.缩写六, 项目.缩写七, 项目.缩写八, 项目.缩写九, 项目.缩写十, 项目.缩写十一, 项目.缩写十二, 项目.缩写十三, 项目.缩写十四, 项目.缩写十五, 项目.缩写十六, 项目.缩写十七, 项目.缩写十八, 项目.缩写十九, 项目.缩写二十, 项目.缩写二十一, 项目.缩写二十二, 项目.缩写二十三, 项目.缩写二十四, 项目.缩写二十五, 项目.缩写二十六, 项目.缩写二十七, 项目.缩写二十八, 项目.缩写二十九, 项目.缩写三十
FROM 病人资料总表 INNER JOIN 项目 ON 病人资料总表.项目名称=项目.项目名称
WHERE (((病人资料总表.检验日期)>=Forms!综合查询!起始时间 And (病人资料总表.检验日期)<=Forms!综合查询!结束时间) And ((病人资料总表.姓名) Like IIf(Forms!综合查询!姓名=Null,"*","*" & Forms!综合查询!姓名 & "*")) And ((病人资料总表.科别) Like IIf(Forms!综合查询!科别=Null,"*","*" & Forms!综合查询!科别 & "*")) And ((病人资料总表.送检医生) Like IIf(Forms!综合查询!送检医生=Null,"*","*" & Forms!综合查询!送检医生 & "*")) And ((病人资料总表.检验者) Like IIf(Forms!综合查询!检验者=Null,"*","*" & Forms!综合查询!检验者 & "*")) And ((病人资料总表.标本类型) Like IIf(Forms!综合查询!标本类型=Null,"*","*" & Forms!综合查询!标本类型 & "*")) And ((病人资料总表.项目名称) Like IIf(Forms!综合查询!项目名称=Null,"*","*" & Forms!综合查询!项目名称 & "*")) And ((病人资料总表.住院号) Like IIf(Forms!综合查询!住院号=Null,"*","*" & Forms!综合查询!住院号 & "*")) And ((病人资料总表.打印状态) Like IIf(Forms!综合查询!打印状态=Null,"*","*" & Forms!综合查询!打印状态 & "*")))
ORDER BY 病人资料总表.病人ID;

===============================================================================================

 

 

Top
54.℡80後2oO 发表于:2014-01-15 14:11:02
自己顶...?

zhaoyoulong 发表于:2014-01-15 15:36:42

=Null 改成 Is Null

"*" & Forms!综合查询!住院号 & "*" 改成 "*'" & Forms!综合查询!住院号 & "'*"

>=Forms!综合查询!起始时间  改成  >=#" & Forms!综合查询!起始时间 & "#<=...



54.℡80後2oO 发表于:2014-01-15 22:16:32

    经过试验,上面的代码基本没问题,那几个条件中,查询中,住院号】可以为空外,其它都不为空,所以代码:

((病人资料总表.住院号) Like IIf(Forms!综合查询!住院号 Is Null,"*","*" & Forms!综合查询!住院号 & "*"))

"*"通配有问题;请问IIf(Forms!综合查询!住院号 Is Null,"*","*" & Forms!综合查询!住院号 & "*"))中"*"应该用什么代替???(表中【住院号】可以为空的情况下)!!!



黎红军 发表于:2014-01-15 22:29:02
可以试试:Like "*" Or Is Null.

54.℡80後2oO 发表于:2014-01-15 22:59:24

LS的朋友 可能没明白我的意思,我说的是在查询where句子中((病人资料总表.住院号) Like IIf(Forms!综合查询!住院号 Is Null,"*","*" & Forms!综合查询!住院号 & "*"))中"*"应该用什么代替,可以达到当查询条件【Forms!综合查询!住院号】为空时,能匹配出有住院号的记录和没有住院号的记录???(表中不是所有记录都有【住院号】)!!!



zhaoyoulong 发表于:2014-01-16 09:38:42

Like IIf(Forms!综合查询!住院号 Is Null,"*","*" & Forms!综合查询!住院号 & "*"))

改成:

Like "*’" & NZ(Forms!综合查询!住院号 )& "‘*" 这样NZ函数就把NULL值变成了一个0长度字符了

Like "*’" & NZ(Forms!综合查询!住院号 )& "‘*"就变成了 Like "*’‘*"



54.℡80後2oO 发表于:2014-01-16 13:35:24

谢谢你的热心解答,但是我想保留这种格式((病人资料总表.住院号) Like IIf(Forms!综合查询!住院号 Is Null,"*","*" & Forms!综合查询!住院号 & "*")) 我要在一个查询中达到条件模糊查询的目的,不知哪位大侠有什么办法????



zhaoyoulong 发表于:2014-01-16 14:25:17

上面的句子并没有影响你在查询中的使用啊!不知道你为什么一定要用 IS NULL???

NZ的使用只不过是转换NUL值为“”而已,如果非要用IIF那么请注意:由于

IIf(expr, truepart, falsepart) 会计算 truepart falsepart,虽然它只返回其中的一个。因此要注意到这个副作用。例如,如果 Forms!综合查询!住院号 Is Null ,则在计算 每二个表达式:"*" & Forms!综合查询!住院号 & "*"产生一个错误,那么程序就会发生错误

错误: *NULL*

如果 病人资料总表.住院号 is null 那么错误又来了:NULL LIKE ?????????

当然,除此外你可以试一试 SELECT CASE WHEN 语句




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