2017-09-20 112 views
1

我在Access中有一個SQL Server鏈接表,我試圖從某個日期或數據範圍(例如< 01/31/2017)中提取查詢。我試圖在訪問設計模式的標準,如下:但它沒有正確比較。比較來自Access中SQL Server鏈接表的日期

SQL服務器表中的字段是日期時間數據類型,我將它的格式設置爲在設計模式下屬性中的短日期訪問。

SELECT dbo_LicensesLiveViewWithRevenue.BAN, 
     dbo_LicensesLiveViewWithRevenue.PTN, 
     dbo_LicensesLiveViewWithRevenue.SOC, 
     dbo_LicensesLiveViewWithRevenue.LicenseCreatedOn, 
     Format([DeactivationDate],"Short Date") AS DeactOn, 
     dbo_LicensesLiveViewWithRevenue.RetailPrice, 
     dbo_LicensesLiveViewWithRevenue.WholeSalePrice, 
     dbo_LicensesLiveViewWithRevenue.AccountID 
FROM dbo_LicensesLiveViewWithRevenue 
WHERE (((dbo_LicensesLiveViewWithRevenue.LicenseCreatedOn)< #2017/01/31#)) ORDER BY dbo_LicensesLiveViewWithRevenue.LicenseCreatedOn; 

我也試過查詢,從窗體傳遞日期作爲參數,沒有運氣。

SELECT dbo_LicensesLiveViewWithRevenue.BAN, 
     dbo_LicensesLiveViewWithRevenue.PTN, 
     dbo_LicensesLiveViewWithRevenue.SOC, 
     dbo_LicensesLiveViewWithRevenue.LicenseCreatedOn, 
     Format([DeactivationDate],"Short Date") AS DeactOn, 
     dbo_LicensesLiveViewWithRevenue.RetailPrice, 
     dbo_LicensesLiveViewWithRevenue.WholeSalePrice, 
     dbo_LicensesLiveViewWithRevenue.AccountID 
FROM dbo_LicensesLiveViewWithRevenue 
WHERE (((dbo_LicensesLiveViewWithRevenue.LicenseCreatedOn)<[Forms]![MainForm]![EndDate])); 

結果:

enter image description here

enter image description here

當我直接在SQL服務器運行查詢是給我用正確的日期正確的記錄(SQL中的日期是<「 20170131' )。在Access中,我有相同數量的記錄,但日期顯示錯誤,如結果圖片。

+2

請顯示不良結果,因爲*它沒有正確比較*和*沒有運氣*對我們沒有幫助。 *我做錯了什麼?* ...我們甚至不知道什麼是錯的。 – Parfait

+0

我添加了更多信息。 –

+0

嘗試'#01/31/2017#'或'CDate(「2017-01-31」)' – Parfait

回答

0

我建議你在設計視圖中打開鏈接表。忽略關於此操作只讀的提示信息)。

如果所討論的列是較新的日期時間格式(日期時間2),並且您使用標準SQL驅動程序進行鏈接,那麼此類日期被視爲TEXT列,而非日期/時間。

如果通過訪問將列看作日期或文本列,快速查看設計視圖中的鏈接表將令人陶醉。

如果您使用SQL Server的任何更新的格式日期,則必須在將錶鏈接到SQL Server時使用較新的本機11(或更高版本)驅動程序。正因爲如此,我傾向於堅持使用舊的「默認」傳統SQL驅動程序。傳統驅動程序安裝幷包含在Windows中 - 因此,當您在每個工作站上運行Access時,不需要安裝驅動程序。但是,如果您在SQL Server中使用較新的日期格式,則需要使用本機11驅動程序鏈接這些表,並且除了Access之外,還必須在每個工作站上分發和安裝本機11驅動程序(或Access運行時)。所以,當人們更喜歡並使用更新的SQL驅動程序時,缺點是必須在每個工作站上安裝這些驅動程序。

因此,請仔細檢查訪問在表設計模式下顯示的列的數據類型 - 如果它們是文本,那麼您需要重新鏈接本機11驅動程序。

+0

感謝您的信息。 –

+0

謝謝您的好意,不要投下答案。你不知道我目前項目中的壓力。我只是想分享我的解決方法。但是因爲IT行業的世界貧困將會受到影響,所以我決定刪除我的帖子。 –