Ms-Access
訪問:變體類型查詢中 VBA 的數字格式
可以說我有兩個查詢,例如
select iif(condition, col, null) from table select f(col) from table
其中
col
是一個雙值列f
是一個 VBA-public function(value as double) as variant
。稍後,我將相應欄位的格式更改為以某種數字格式顯示,例如百分比。我決定f
應該是 avariant
,因為它應該在適當的時候返回 Null 。但是,在前一種情況下,我指定的格式受到尊重,但如果我切換到後者,則完全忽略數字格式。為什麼?
答案可以在 Allen Browne 的頁面中找到:
在查詢中,一列只能是一種數據類型。因此,JET 將變體視為文本,因為任何內容(數字、日期、字元……)在文本列中都是有效的。
數字格式選項不會影響從 VBA 變體自動轉換的文本值,即使原始值編碼為數字也是如此。
他推薦的解決方案是做你已經發現的事情:使用 IIF 語句。Jet 引擎使用來自參數的數據類型線索來確定返回列的數據類型。
下面是一些程式碼,將顯示自動選擇的列類型:
Dim rs As Recordset2 Set rs = CurrentDb.OpenRecordset("SELECT f([Col]) FROM table") Debug.Print "Is text? " & (rs.Fields(0).Type = dbText) rs.Close