Office中国论坛/Access中国论坛

标题: 未解决,请问这个SQL查询的条件应怎么运用 [打印本页]

作者: sbsfhgl    时间: 2007-12-15 12:02
标题: 未解决,请问这个SQL查询的条件应怎么运用
ADP查询和MDB查询不一样,这个是WHERE条件,弄进去不得,应怎么改,请指点下

Between (IIf(IsNull([Forms]![员工工资明细]![出厂日期开始]),#2002-1-1#,[Forms]![员工工资明细]![出厂日期开始])) And (IIf(IsNull([Forms]![员工工资明细]![出厂日期截止]),#2099-12-31#,[Forms]![员工工资明细]![出厂日期截止]))未

[ 本帖最后由 sbsfhgl 于 2007-12-19 13:45 编辑 ]
作者: andymark    时间: 2007-12-15 14:20
很少用ADP
用Switch代替iif
作者: sbsfhgl    时间: 2007-12-15 15:24
很少用ADP?不是说ADP+SQL比MDB+SQL好许多倍吗?
再问个,下面这个语句要两个参数,在ADP中怎么弄?
LIKE IIf(ISNULL(N'[Forms]![不良批次处理统计]![工序]'), '*', '*' & N'[Forms]![不良批次处理统计]![工序]' & '*')
作者: sbsfhgl    时间: 2007-12-17 09:22
有没有会呀?????
作者: sbsfhgl    时间: 2007-12-17 12:41
。。。。。。。。。。。。。。。。
作者: kangking    时间: 2007-12-17 13:02
我想你最好用一个函数返回日期.
因为一个字段看上去没有值的时候,很可能是一个长度为0的字串,这时isnull()返回的是假.
建议做下面的修改:
Between fBegindata() And fEnddata()

其中的fBegindata()和fEnddata()是两个函数,你可以在函数中返回正确的日期.
作者: sbsfhgl    时间: 2007-12-17 14:40
那 fBegindata() 的函数怎么写,我只要一个例子就行了,这个我还不会。因为没有例子。
还有下面这个要求输入两个参数:
LIKE IIf(ISNULL(N'[Forms]![不良批次处理统计]![工序]'), '*', '*' & N'[Forms]![不良批次处理统计]![工序]' & '*')
作者: sbsfhgl    时间: 2007-12-18 07:59
。。。。。。。。。。。。。。。。
作者: Victor_Duane    时间: 2007-12-18 08:19
在ADP中通配符有所不同,? * 在ADP中是_ %
此为参考,请楼主查看
作者: kangking    时间: 2007-12-18 11:43
原帖由 sbsfhgl 于 2007-12-17 14:40 发表
那 fBegindata() 的函数怎么写,我只要一个例子就行了,这个我还不会。因为没有例子。
还有下面这个要求输入两个参数:
LIKE IIf(ISNULL(N'[Forms]![不良批次处理统计]![工序]'), '*', '*' & N'[Forms]![不良批次处 ...


大概如下面的例子
public function fBegindata() as date
if not isdate([Forms]![员工工资明细]![出厂日期开始]) then
fBegindata=#2002-1-1#
else
fBegindata=[Forms]![员工工资明细]![出厂日期开始]
end if
end function
没有调试.  :-)
作者: sbsfhgl    时间: 2007-12-18 16:00
这个不对呀,需要在ADP里面的查询,大量出错
作者: laomao    时间: 2007-12-18 16:43
sqlserver里没有iif,日期表示为'2007-12-18'不用#
作者: sbsfhgl    时间: 2007-12-18 18:04
原帖由 laomao 于 2007-12-18 16:43 发表
sqlserver里没有iif,日期表示为'2007-12-18'不用#


大哥呀,这个我知道,但关键怎么改嘛,这是主要的,关于ADP有很多,我就是找不到这样的例子。。。。
作者: sbsfhgl    时间: 2007-12-19 13:44
各位如何写嘛????
1。 Between (IIf(IsNull([Forms]![员工工资明细]![出厂日期开始]),#2002-1-1#,[Forms]![员工工资明细]![出厂日期开始])) And (IIf(IsNull([Forms]![员工工资明细]![出厂日期截止]),#2099-12-31#,[Forms]![员工工资明细]![出厂日期截止]))
2。 LIKE IIf(ISNULL(N'[Forms]![不良批次处理统计]![工序]'), '*', '*' & N'[Forms]![不良批次处理统计]![工序]' & '*')
以上写在ADP查询中。
作者: laomao    时间: 2007-12-19 23:55
如果,@date1作为开始日期,@date2作为截止日期:
between isnull(@date1,'2002-1-1') and isnull(@date2,'2099-12-31')

[ 本帖最后由 laomao 于 2007-12-19 23:56 编辑 ]




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3