访问 - VBA代码问题日期问题

时间:2010-10-20 12:03:09

标签: database ms-access vba date

嘿所有,已经设法完成了数据库;但是我在开始时遇到的问题遇到了问题。基本上,数据库中的计算是使用VBA代码完成的。现在我遇到了一个问题,它不是仅选择过去两年的数据,而是选择和使用两年多以前的数据。它应该选择的数据来自Historical_Stock_Data表和Historical_Currency表。

现在我需要设置两年限制的原因是我们在工作中使用的索引,它根据仅两年的数据进行一些计算。我不会把所有的代码放在这里,因为它可能太多了,但是如果你想我可以的话,我会把这些SELECT的表的代码的SQL部分放到Recordset中。

    Set rst = db.OpenRecordset("SELECT Location.ID, Location.Location, CompanyLocation.StockCode, Company_Information.CompanyName, Company_Information.NOSH, " & _
" Company_Information.[CEP NAV], Company_Information.CompanyDescription, Company_Information.CurrencyCode, Historical_Stock_Data.StockCode, Historical_Stock_Data.Dates, " & _
" Historical_Stock_Data.SharePrice, Historical_Stock_Data.Volume, Historical_Currency.Rates " & _
" FROM Location RIGHT JOIN (((Historical_Currency RIGHT JOIN Company_Information ON Historical_Currency.CurrencyCode = Company_Information.CurrencyCode) " & _
" RIGHT JOIN CompanyLocation ON Company_Information.StockCode = CompanyLocation.StockCode) LEFT JOIN Historical_Stock_Data ON " & _
" Company_Information.StockCode = Historical_Stock_Data.StockCode) ON Location.ID = CompanyLocation.LocationID " & _
" where CompanyLocation.StockCode='" & strStockcode & "' AND ((Historical_Stock_Data.Dates)=[Historical_Currency].[Dates]) AND (Historical_Stock_Data.Dates) >" & Date & " - 730 " & _
" ORDER BY Historical_Stock_Data.SharePrice")

现在问题是我尝试使用DateAdd功能,但又没有运气;我尝试在Access中放置SELCT查询,它仍然选择了超​​过两年的数据;所以我不确定该怎么做。这很重要的原因是因为他们每天开始使用它;索引必须改变,24个月的高值和低值也必须改变,所以它需要工作。有趣的是,它实际上是在工作之前,但我似乎无法弄清楚我添加到数据库中的内容或发生了什么使它无法正常工作。

我可以在这里粘贴完整的VBA代码,如果它可以提供更多帮助。

1 个答案:

答案 0 :(得分:2)

除非您同时包含两个分隔符并将其格式化,否则该格式的日期将不起作用。所以:

(Historical_Stock_Data.Dates) >#" & Format(Date - 730, "yyyy/mm/dd") "# ... 

但是,我认为没有理由不使用:

 Historical_Stock_Data.Dates > DateAdd(""yyyy"",-2,Date())

修改

" where CompanyLocation.StockCode='" & strStockcode & _
"' AND Historical_Stock_Data.Dates=[Historical_Currency].[Dates] " & _
" AND Historical_Stock_Data.Dates > DateAdd(""yyyy"",-2,Date()) " & _