Excel SQL查询 – 其中(somefield)为空 – 无法正常工作
在Excel SQL Query where子句中遇到一些问题。
Excel表格中的数据(据我所知)是空的,单元格中没有数值和格式等。 我试图从Outlook(在VBA中)运行以下查询。
strQuery = "Select Count(ReviewDate) as UnassignedCount FROM [PatComDB$] Where ReviewDate is null "
但查询返回0。
我已经寻找了一些解决scheme,并尝试了以下。
strQuery = "Select Count(ReviewDate) as UnassignedCount FROM [PatComDB$] Where IIF(ReviewDate is null,0,ReviewDate) "
(其中返回7 – 非空字段的计数)
并没有运气。
我的连接子句如下(如果有用的话)
Set Con = New ADODB.Connection With Con .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=<some link>;" & _ "Extended Properties=Excel 8.0;" .Open End With
我的床单看起来像这样
IdeaID RPA Type SubDate ReviewDate IdeaID1 RPA1234 Existing 01/01/2015 IdeaID2 RPA1235 New 02/01/2015 IdeaID3 RPA1236 Existing 03/01/2015 IdeaID4 RPA0001 New 04/01/2015 01/09/2015 IdeaID5 RPA0001 New 05/01/2015 02/09/2015 IdeaID6 RPA0001 New 06/01/2015 07/09/2015 IdeaID7 RPA0001 New 07/01/2015 07/09/2015 IdeaID8 RPA0001 New 08/01/2015 07/09/2015 IdeaID9 RPA0001 New 09/01/2015 07/09/2015 IdeaID10 RPA0001 New 10/01/2015 07/09/2015
有没有人有任何想法,我可能会出错,无论是我的查询或我的工作表中的数据也许?
注意:不幸的是我在软件方面仅限于Outlook和Excel。
提前致谢。
编辑:
忘了提及在相同的数据集上运行以下查询返回NULL
strQuery = "Select * FROM [PatComDB$] Where Index = 1" rsARR = rs.GetRows Debug.Print (rsARR(6, 0))
经过几次代码变更尝试后,我自己找出了答案。
我不得不将数列更改为数据列,使其正常工作(在这种情况下,我使用索引字段永远不会是空的)使用的代码如下。
strQuery = "Select Count(Index) as UnassignedCount FROM [PatComDB$] Where ReviewDate = Null OR ReviewDate = 0 OR ReviewDate is null"
我从这里回答了一些build议,并从我的研究中得到了其他答案,以确保我捕获了空单元格的每一个可能性(我认为)。
我只是猜测这里试试这个:
strQuery = "Select Count(IIF(ReviewDate is null,0,ReviewDate)) as UnassignedCount FROM [PatComDB$] Where ReviewDate = 0"
由于上述没有工作尝试这个我已经在访问数据库中使用这个,因为有时数据不是null它是空白的。
strQuery = "Select Count(ReviewDate) as UnassignedCount FROM [PatComDB$] Where ReviewDate is Null Or " & Char(34) & Char(34)
不知道它是否适用于Excel查询。 值得一试