返回列表 上一主題 發帖

[發問] Excel VBA SQL 查詢問題

[發問] 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 錯誤'

Err.JPG

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

感恩~

如附件
Input2.zip (39.63 KB)

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"
懂得發問,答案就會在其中

今日の一秒は  明日にない
http://kimbalko-chi.blogspot.com
http://kimbalko.blogspot.com

TOP

本帖最後由 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版大的指導

Input2.zip (40.9 KB)

TOP

        靜思自在 : 有時當思無時苦,好天要積雨來糧。
返回列表 上一主題