2016-06-13 17 views
-1
SELECT T.NAME AS Expr1, T.AREA AS Expr2, T.AlarmCount, 
     CDate(Format(T.[ITIME],"0000-00-00 00\:00\:00 ")) AS ITIME, 
     CDate(Format(T.ATIME,"0000-00-00 00\:00\:00 ")) AS ATIME, 
     CDate(Format(T.NTIME,"0000-00-00 00\:00\:00 ")) AS NTIME, T.DUR AS Expr3 
FROM (SELECT DISTINCT(IWTUSER_ALARMS.NAME) AS NAME, 
       COUNT(*) AS AlarmCount, 
       IWTUSER_ALARMS.AREA AS AREA, 
       IWTUSER_ALARMS.ITIME AS ITIME, 
       IWTUSER_ALARMS.ATIME AS ATIME, 
       IWTUSER_ALARMS.NTIME AS NTIME, 
       IWTUSER_ALARMS.DUR AS DURATION 
    FROM IWTUSER_ALARMS 
    GROUP BY IWTUSER_ALARMS.NAME, 
         IWTUSER_ALARMS.AREA, 
        ITIME,     
        ATIME, 
        NTIME, 
        IWTUSER_ALARMS.DUR 

    ) AS T 
WHERE (((CDate(Format([IWTUSER_ALARMS].[ITIME],"0000-00-00 00\:00\:00 ")))>=Date()-180)); 

回答

0

試試這個:

SELECT T.NAME AS Expr1, T.AREA AS Expr2, T.AlarmCount, 
    Format([T].[ITIME],"General Date") AS ITIME, 
    Format(T.ATIME,"General Date") AS ATIME, 
    Format(T.NTIME,"General Date") AS NTIME, 
    T.DURATION AS Expr3 
FROM (SELECT DISTINCT(IWTUSER_ALARMS.NAME) AS NAME, 
      COUNT(*) AS AlarmCount, 
      IWTUSER_ALARMS.AREA AS AREA, 
      IWTUSER_ALARMS.ITIME AS ITIME, 
      IWTUSER_ALARMS.ATIME AS ATIME, 
      IWTUSER_ALARMS.NTIME AS NTIME, 
      IWTUSER_ALARMS.DUR AS DURATION 
FROM IWTUSER_ALARMS 
GROUP BY IWTUSER_ALARMS.NAME, 
        IWTUSER_ALARMS.AREA, 
       ITIME,     
       ATIME, 
       NTIME, 
       IWTUSER_ALARMS.DUR 
) AS T 
WHERE (((T.ITIME)>=Date()-180)); 

錯誤是由您的WHERE條款引起的。 ITIME已經是一個日期,所以你可以比較它而不用格式化字符串(用錯誤的格式表達),然後恢復到日期無效的日期和ITIME來自臨時表T而不是IWTUSER_ALARMSWHERE條款。

IWTUSER_ALARMS.DUR AS DURATION有別名DURATION

您的日期格式不正確。嘗試Debug.Print Format(#6/18/2016#,"0000-00-00 00\:00\:00 ")。這是如何格式化日期http://www.techonthenet.com/access/functions/date/format.php

ITIMES, ATIME and NTIME應顯示爲字符串,我假設或刪除格式(請參閱WHERE子句錯誤)。

避免在變量和標識符中使用像NAME這樣的保留關鍵字。希望我抓住他們所有人!

+0

感謝您的幫助 - 現在我沒有發生溢出錯誤,但由於某種原因沒有顯示數據。我甚至在1天到最後30天之間的日期上玩了數據表中沒有任何內容。 – abiyek

相關問題