iT邦幫忙

1

請問convert(double precision ,isnull(MB064 ,-999999))),這句話是有什麼作嗎?為什麼要用-999999呢?

  • 分享至 

  • xImage

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語法要一直換行有什麼實際上的作用嗎?

謝謝不吝解答

下次請用這樣表示
```
語法內容
```
這樣會比較好,比較知道那一段是語法,而不是問題本身
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

4
海綿寶寶
iT邦大神 1 級 ‧ 2022-11-20 18:50:51
最佳解答

問題一:請問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

我要發表回答

立即登入回答