我的Access数据库中有以下SQL查询,连接到SQL Server 2008:
SELECT COUNT(*) as mCount
FROM [Projects]
WHERE [DateProjectSubmitted]>'2014';
这很有效,完全符合我的需要。
但是,我似乎无法在我的函数中修改Access中的工作查询(删除了所有错误处理):
Public Function getNumberOfYearToDateProjects() As Integer
Dim rsMyRecordSet As ADODB.Recordset
Dim sSql As String
Set rsMyRecordSet = New ADODB.Recordset
sSql = "SELECT COUNT(*) as mCount FROM [Projects] WHERE [DateProjectSubmitted]>#" & Format(Date, "YYYY") & "#"
rsMyRecordSet.Open sSql, CurrentProject.Connection
getNumberOfYearToDateProjects = rsMyRecordSet.Fields("mCount")
End Function
我知道Access在日期表达式中需要#
符号,但我似乎无法将2014
识别为比较目的的日期。
如果我直接复制SQL,我会遇到数据不匹配的问题。
我可以做到以下几点,但这看起来很难看
sSql = "SELECT COUNT(*) as mCount FROM [Projects] WHERE [DateProjectSubmitted]>#" & DateSerial(Year(Date), 1, 1) & "#"
我可以修改SQL查询,还是需要使用类似DateSerial
的内容来创建假的2014-01-01日期进行比较?
答案 0 :(得分:3)
假设DateProjectSubmitted是一个日期字段,而yourYear是一个数字
SELECT COUNT(*) as mCount FROM [Projects] WHERE YEAR([DateProjectSubmitted]) > " & yourYear