2017-09-28 61 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說明