我是大学的学生员工,我为我们的设施部门进行应用程序开发。我们有几个用Visual FoxPro编写的内部应用程序(是的,我知道它不再受支持),我帮助维护。最近我们发现我们的一个表有一个按日期过滤的问题。如果查看表格,所有数据都显示正常。但是,如果对它运行SELECT查询,查找日期范围之间的所有记录,则会发生奇怪的事情。
如果开始日期< = 2014/12/13,结束日期是2015年或没有结束日期,则结果集不包括2014/12/13之后的任何记录。
如果开始日期< = 2014/12/14,结束日期是2015年或没有结束日期,结果集将包含正确的记录。
视图以及在命令窗口中执行独立SELECT语句时也会表现出同样的行为。
今天早上我发现,如果我在命令窗口中使用SET FILTER TO命令,我会得到正确的结果。
有没有其他人经历过类似的事情?
答案 0 :(得分:0)
正如塔玛所说,这很可能是腐败指数。 运行验证数据库从命令窗口恢复没有帮助。 我们之前为修复损坏索引而编写的程序也没有帮助,尽管两者都报告了成功运行。
我们采取了更积极的步骤并从表中删除了索引。这给了我们关于.DTC文件的错误,但索引消失了,SELECT按预期工作。
我们再次添加了索引,得到了相同的.DCT文件错误,并且SELECT又恢复了工作。
此时我们调查了.DCT文件并意识到上次更新的日期是一周前,而不是今天,就像所有与数据库相关的其他文件一样。
我们使用了foxpros cleanup database命令,然后再次添加索引,没有.DCT错误,SELECT工作正常。
感谢您的所有帮助和建议。
答案 1 :(得分:-1)
试试这个:
SELECT * FROM Purchreq WHERE Log_date >= CTOD('12/13/2014')