- 帖子
- 529
- 主題
- 56
- 精華
- 0
- 積分
- 607
- 點名
- 116
- 作業系統
- win 10
- 軟體版本
- []
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2013-3-19
- 最後登錄
- 2025-5-18
           
|
8#
發表於 2015-9-24 09:15
| 只看該作者
回復 7# Baracuda
純屬討論及個人看法
VBA ADO SQL 好像並不支援變數運算,
UDF也只是在結果欄位放入計算式而不是ADO會直接計算
這個題目,個人的看法是ADO的支援能力問題而不是 UDF 裡有幾個參數
主欄位也一樣不能用變數計算:
隨意舉例 "核定本薪"
Const aa=2
可以計算; 核定本薪 * 直接常數 2
lcCommandText = "SELECT 序號, 姓名, 核定本薪 * 2 as bb, 核定績效 , 薪資總額 , 勞保薪資 , 勞退薪資 , 健保薪資, " & _
" 勞退 , 職災, 普通事故, 就業保險, 工資墊償, 全民健保, 全民健保舊, " & _
" '=Multiply_2_No_Round_Down_4_Up_5(' + trim(str(勞退)) + ',' + trim(str(0.1)) + ')' as 勞退個人 " & _
"FROM " & "[" & Input_Sht & "$" & "A1:P32]"
可以計算; 核定本薪 * " & aa & " ,變數已在成立 lcCommandText 字串時轉化了 aa 為 2,2 是常數不是變數
lcCommandText = "SELECT 序號, 姓名, 核定本薪 * " & aa & " as bb, 核定績效 , 薪資總額 , 勞保薪資 , 勞退薪資 , 健保薪資, " & _
" 勞退 , 職災, 普通事故, 就業保險, 工資墊償, 全民健保, 全民健保舊, " & _
" '=Multiply_2_No_Round_Down_4_Up_5(' + trim(str(勞退)) + ',' + trim(str(0.1)) + ')' as 勞退個人 " & _
"FROM " & "[" & Input_Sht & "$" & "A1:P32]"
不會計算; 核定本薪 * aa 的變數 aa 是 lcCommandText 字串的一部分, ADO沒支援字串內的變數
lcCommandText = "SELECT 序號, 姓名, 核定本薪 * aa as bb, 核定績效 , 薪資總額 , 勞保薪資 , 勞退薪資 , 健保薪資, " & _
" 勞退 , 職災, 普通事故, 就業保險, 工資墊償, 全民健保, 全民健保舊, " & _
" '=Multiply_2_No_Round_Down_4_Up_5(' + trim(str(勞退)) + ',' + trim(str(0.1)) + ')' as 勞退個人 " & _
"FROM " & "[" & Input_Sht & "$" & "A1:P32]" |
|