2017-09-28 71 views
0

我远程服务与接入MDB错误日志的设备。使用自定义Web浏览器界面,有限的SQL查询可以再次运行表EalInfo。 SQL字符串必须全部在一行上。下面我SQL - 多凡标准上同一领域

使用代码可以选择记录,其中含有的差错编号S_这是伟大的,因为它排除了许多不必要的记录。

Select 
    DTime, 
    ErrNum, 
    Param1, 
    Param2, 
    Controller, 
    vxwErrNo, 
    Info, 
    [TmStamp]/86400 AS DAYS_SinceGantryPwrCycle, 
    [TmStamp]/3600 AS HOURS, 
    [TmStamp]/60 AS MINs 
from EalInfo 
where ErrNum like '%S_%' 
order by DTime Desc 

但是,当我额外的过滤器(试图排除两个常见但无益的错误)没有记录返回。

where ErrNum like '%S_%' 
    AND ErrNum <> "S_GAFSTARTUPTASK_DTH_BAD_PARAM" 
    AND ErrNum <> "S_DTH_USER_ALREADY_REGISTERED" 

我的SQL技巧非常薄弱 - 我已经使用Google和脚本kitty了一下 - 但没有喜悦。

感谢

+1

尝试“单引号”而不是“双引号” –

+0

@RichBenner。 。 。 MS Access使用双引号字符串。 –

+0

AAH,不知道的是,由于@GordonLinoff –

回答

0

不使用多年的访问,以便我可能是错的,但尝试:

SELECT 
     DTime, 
     ErrNum, 
     Param1, 
     Param2, 
     Controller, 
     vxwErrNo, 
     Info, 
     [TmStamp]/86400 AS DAYS_SinceGantryPwrCycle, 
     [TmStamp]/3600 AS HOURS, 
     [TmStamp]/60 AS MINs 

    FROM 
     EalInfo 

    WHERE 
     ErrNum LIKE '*S_*' 
       AND ErrNum <> 'S_GAFSTARTUPTASK_DTH_BAD_PARAM' 
       AND ErrNum <> 'S_DTH_USER_ALREADY_REGISTERED' 

    ORDER BY 
     DTime DESC 
1

在MS Access,为like通配符为*,不%。所以,我希望您的查询,看起来像这样:

where ErrNum like '*S_*' and 
     ErrNum <> "S_GAFSTARTUPTASK_DTH_BAD_PARAM" and 
     ErrNum <> "S_DTH_USER_ALREADY_REGISTERED" 

我要指出,所有这些条件将筛选出的errnumNULL值。如果您期待NULL,那么您需要明确检查。

你或许应该简化<>逻辑:

where ErrNum like '*S_*' and 
     ErrNum not in ("S_GAFSTARTUPTASK_DTH_BAD_PARAM", "S_DTH_USER_ALREADY_REGISTERED") 
+0

我想回答这个问题,但做了一些挖掘,和所有[此页]进来(https://msdn.microsoft.com/en-us/library/ff192499。 aspx),声明它在某些情况下是有效的(对于JET使用JET 4或OLE DB提供程序时)。这可能是原因,但我不明白为什么第一个查询能够正常工作。 –

+0

感谢您的答复 - 我会尝试你的建议,并在这里报到。 LIKE代码起作用,很可能使用旧版本的JET/OLE。 – user3687207

0

谢谢所有谁回答。

这里是为我工作的代码。

这个自定义/有限SQL接口需要SQL字符串都在同一行 - 但我已经尝试在这里为格式化可读性:

选择

DTime 
ErrNum 
Param1 
Param2 
Controller 
vxwErrNo 
Info 
[TmStamp]/86400 AS DAYS_SinceGantryPwrCycle 
[TmStamp]/3600 AS HOURS 
[TmStamp]/60 AS MINs 

从EalInfo

(ErrNum like '%S_%') AND 
(ErrNum not like '%S_GAFSTARTUPTASK%') AND 
(ErrNum not like '%S_DTH_USER_ALREADY%') 

订购DTIME说明