2012-03-13 106 views
0

只有在ADODC1工作表中存在Sect列的情况下,ado中的SQL查询才能正常工作。
如果ADODC1表没有Sect列,则会引发错误。
请纠正我下面的查询......ADO-excel中的问题,SQL查询

strSQL = "Select Name,Dept,IIF(ISNULL(Sect),'',Sect) AS Sect from [Adodc1$] UNION Select Name,Dept,Sect from [Adodc2$];" 

如果Sect列ADODC1表不存在,所需要的结果为空。

+2

你总是可以运行一个“从ADODC1 $选择*其中1 = 2”第一:这将允许你检查现场在运行主查询之前返回所需列的空记录集中的名称。 – 2012-03-13 03:21:15

+0

@Tim我希望你能发表一个答案。 – Fionnuala 2012-03-13 08:23:21

+0

@Remou:查看相关问题。 – onedaywhen 2012-03-13 09:58:43

回答

2

你的意思是“需要结果为空”。如果您对错误进行故障排除,您将获得一个关闭的记录集。这是'空'吗?

我怀疑这是你需要做的(伪代码):

On Error Resume Next 
strSQL = "Select Name,Dept,IIF(ISNULL(Sect),'',Sect) AS Sect from [Adodc1$]" & _ 
      " UNION Select Name,Dept,Sect from [Adodc2$];" 

Set rs = cn.Execute(strSQL) 

If rs.State <> adStateOpen Then 

    strSQL = "Select Name,Dept,NULL AS Sect from [Adodc1$]" & _ 
      " UNION Select Name,Dept,Sect from [Adodc2$];" 

    Set rs = cn.Execute(strSQL) 

    If rs.State <> adStateOpen Then 

     ' Deeper problems...