2012-03-13 46 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...