2015-04-08 114 views
0

我是大學的學生僱員,我爲我們的設施部門開發應用程序。我們有幾個用Visual FoxPro編寫的內部應用程序(是的,我知道它不再被支持),我幫助維護。最近我們發現我們的某個表格有一個按日期過濾的問題。如果您查看錶格,所有數據都會顯示正常。但是,如果您對它運行SELECT查詢,查找日期範圍內的所有記錄,奇怪的事情就會發生。根據日期不顯示數據

如果開始日期< = 2014/12/13,並且結束日期爲2015年或沒有結束日期,則結果集不包含2014年12月13日之後的任何記錄。

如果開始日期< = 2014/12/14,且結束日期爲2015年或沒有結束日期,則結果集將包含正確的記錄。

如果獨立的SELECT語句在命令窗口中執行,則視圖和視圖將表現出相同的行爲。

今天早上我發現如果我在命令窗口中使用SET FILTER TO命令,我會得到正確的結果。

有沒有其他人曾經經歷過類似的事情?

+0

如何在查詢中格式化日期? –

+0

哪個數據庫你使用...是它的SQL服務器 –

+0

你可以發佈實際查詢嗎? – LAK

回答

0

由於添馬艦建議,這是最有可能是腐敗指數。 運行驗證數據庫從命令窗口中恢復沒有幫助。 我們之前編寫的用於修復損壞索引的程序也沒有幫助,雖然兩者都報告成功運行。

我們採取了更激進的措施並從表格中刪除了索引。這給了我們一個有關.DTC文件的錯誤,但是索引消失了,SELECT按預期工作。

我們再次添加了索引,得到了相同的.DCT文件錯誤,並且SELECT返回不起作用。

在這一點上,我們調查了.DCT文件,並意識到最後更新的日期是一週前,而不是像今天所有與數據庫相關的其他文件。

我們使用foxpros cleanup database命令,然後再次添加沒有.DCT錯誤的索引,並且SELECT完美地工作。

感謝您的所有幫助和建議。

-1

試試這個:

SELECT * FROM Purchreq WHERE Log_date >= CTOD('12/13/2014') 
+0

沒有區別。 –

+0

指定明確日期的最佳方式是{^ 2014-12-13} –