Board logo

標題: [發問] Excel VBA SQL 查詢問題 [打印本頁]

作者: mgame168    時間: 2011-10-17 11:22     標題: Excel VBA SQL 查詢問題

請教各位先進~

我有一mdb資料庫,內有3個table分別為
1. dbo_pro
   prno, kano, a01,.........
2. dbo_prok
   kano, name,......
3. dbo_aa
   a01, name, names.......

我想依條件Sheet1.Range("K9")為搜尋條件(prno),
從資料庫dbo_pro -->kano, a01 left join 另外
兩個Table內的資料,但執行時顯示錯誤"Automation 錯誤'

[attach]8252[/attach]

想請教是我的SQL語法錯誤還是EXCEL VBA 對SQL
查詢語法有限制呢?

感恩~

如附件
[attach]8254[/attach]
作者: kimbal    時間: 2011-10-20 00:12

dbo_aa.names
names 好像剛好是關鍵字,  簡單的話換一下欄名

另外LEFT JOIN, ISNULL 的在ACCESS會有不同寫法:
(以下我把DBO_AA.NAMES改成DBO_AA.NAME)
      SQL = "Select dbo_pro.*,  dbo_aa.name as anames, iif(isnull(dbo_prok.name), '',dbo_prok.name)as namek "
     SQL = SQL & "From (dbo_pro left outer join dbo_aa on dbo_pro.a01=dbo_aa.a01) "
     SQL = SQL & "left join dbo_prok on dbo_pro.kano=dbo_prok.kano "
     SQL = SQL & "Where dbo_pro.prno ='" & Sheet1.Range("K9") & "'"
     SQL = SQL & " Order by dbo_pro.prno"
作者: mgame168    時間: 2011-10-24 17:52

本帖最後由 mgame168 於 2011-10-24 17:58 編輯

回復 2# kimbal


    感謝 kimbal 版大
     isnull() 經查證後, 在MS-SQL 可用,

     Access中的IsNull()     
      在Access中,IsNull的作用僅僅是判斷是否為空值
     不過Access還是有支援MS-SQL IsNull的相似指令碼,
     在Access是用 iif 替代..
Select iif(IsNull( express ), value1, value2 ) From TableName
語法說明,判斷express是否為空,若是空的回傳value1,反之則回傳value2

LEFT JOIN 的寫法如同您寫的方式

dbo_aa.names
names 好像剛好是關鍵字, 沒錯的確是關鍵字
但資料庫的欄位名稱我無法更改, 所以對於
保留字的衝突
解決辦法就是將names改成[names]就解決了

以下的語法我有修改過
     SQL = "Select dbo_pro.*, dbo_prok.name, dbo_aa.[names] "
     SQL = SQL & "From (dbo_pro left outer join dbo_aa on dbo_pro.a01=dbo_aa.a01) "
     SQL = SQL & "left join dbo_prok on dbo_pro.kano=dbo_prok.kano "
     SQL = SQL & "Where dbo_pro.prno ='" & Sheet1.Range("K9") & "'"
     SQL = SQL & " Order by dbo_pro.prno"

感謝kimbal版大的指導

[attach]8326[/attach]




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)