strSQL = " select * , " _
& "(select convert(varchar , convert(double precision ,isnull(MB064 , -999999))) + ' ' + ISNULL(MB004, '無') " _
& " from " & invnCompany & "..INVMB " _
& " where MB001=T001.TD004 and MB004=T001.TD009) invnQnty " _
& " from ( " & vbNewLine & strSQL & vbNewLine _
& " ) T001" & vbNewLine _
& " order by c ,TD001 ,TD002 ,TD003 "
MB064為庫存量 MB004單位 invnCompany公司別
您好我是VBA和SQL菜鳥,我看到之前資訊寫VBA抓取鼎新資料庫的語法,有一些不懂的地法想請教
問題一:請問convert(double precision ,isnull(MB064 ,-999999))),這句話是有什麼作嗎?為什麼要用-999999呢?
問題二:vbNewLine我知道是換行,但為什麼在SQL語法要一直換行有什麼實際上的作用嗎?
謝謝不吝解答
問題一:請問convert(double precision ,isnull(MB064 ,-999999))),這句話是有什麼作嗎?為什麼要用-999999呢?
MB064 是庫存量,是數字型態
原則上應該都有值
但是有些時侯因故沒有值(isnull成立)
這時就要「塞個特別的數字(表示沒有值
)給他」
所以當初的人選擇 -999999 這個數字
千萬不能選0這個數字,因為庫存量沒有值 不等同於 庫存量為0
問題二:vbNewLine我知道是換行,但為什麼在SQL語法要一直換行有什麼實際上的作用嗎?
你繼續往下看程式碼
應該會有將 strSQL 顯示出來(for debug/log)的程式碼
vbNewLine 只是為了顯示出來比較「好看」
從
SELECT A,B,C,D,E FROM F,G,H LEFT JOIN I ON J=K WHERE M=N AND O=P ORDER BY Q,R
變成
SELECT A,B,C,D,E
FROM F,G,H
LEFT JOIN I ON J=K
WHERE M=N AND O=P
ORDER BY Q,R