如果应该为true,则Access 2007查询将返回布尔值false

时间:2014-10-06 17:25:37

标签: sql excel-vba ms-access-2007 vba excel

这种特别难以解释,因为英语不是我的第一语言,让我们看看是否可以让自己理解,我试图执行一个Select查询来获取一个时间范围内的记录(列ContactDate包含日期/时间值)查询如下:

SELECT Val([ACD_ID] & Format(DateValue([ContactDate]),'0')) AS SEARCH_CODE, CFinal, 1 AS Expr1, 
COPCFCR, FCRPossible, RecordName
FROM [YTD-Daily_Report]
WHERE ((([YTD-Daily_Report].[ContactDate])>=#9/01/2014#
 And ([YTD-Daily_Report].[ContactDate])<=#10/01/2014#));

在源表(YTD-Daily_Report)中,COPCFCR和FCRPossible被定义为Checkboxes(true或false),当我在数据库中使用Access运行此查询时,一切正常我得到一个具有ID的连接值的列+ Date,包含得分的列,包含1的列,包含COPCFCR值的列(true或false),具有FCRPossible值的列(true或false),以及具有RecordName的列,此时如果我与表中的值进行比较,则它们匹配100%。 现在,我接受了这个查询并将其放在Excel工作簿上但是当它运行时它返回COPCFCR和FCRPossible列错误的值,有时将false返回为true或反之,其他时候值与相应的值匹配100%在源表上,例如在某些行中,根据源表,COPCFCR应为false时返回为true。 以下是我使用的Excel VBA代码:

Dim rsSource As New Recordset
Dim m_Connection As New Connection
Dim rngTarget as range
dim result as long
m_Connection.Provider = "Microsoft.ACE.OLEDB.12.0"
m_Connection.Open "Path and name of the Database"
strQuery = "SELECT Val([ACD_ID] & Format(DateValue([ContactDate]),'0')) AS SEARCH_CODE, CFinal, 1 AS Expr1, COPCFCR, FCRPossible, RecordName" & Chr(13) & _
"FROM [YTD-Daily_Report]" & Chr(13) & _
"WHERE ((([YTD-Daily_Report].[ContactDate])>=#" & Format(START_DATE, "m/dd/yyyy") & "# And ([YTD-Daily_Report].[ContactDate])<=#" & Format(STOP_DATE + 1, "m/dd/yyyy") & "#));"
rsSource.Open strQuery, m_Connection, adOpenForwardOnly, adLockReadOnly 
Set rngTarget = Range("A2")
result = rngTarget.CopyFromRecordset(rsSource)
If rsSource.State Then rsSource.Close
Set rsSource = Nothing
If m_Connection.State Then m_Connection.Close
Set m_Connection = Nothing

任何想法可能会发生什么?

1 个答案:

答案 0 :(得分:0)

似乎数据库文件已损坏,这导致数据以与其调用的方式不同的方式导出。查询工作正常。