2013-08-26 185 views
2

我已經創建了一個VBA函數,用於從Access表中選擇一些數據並將該數據放入臨時表中。我想使用以下代碼更改日期列的格式,以便日期具有前導'0'。VBA日期格式

Dim lValue As String 
lValue = Format(Transaction_Date, "mm/dd/yyyy") 
Dim i As Integer 
SQL = "SELECT ID, PO_Number, Vendor_Company, Incurred_By, Transaction_Type, lValue as Transaction_Date, Investment_ID, " & _ 
"Notes, Quantity INTO tmp_Tran_Actual FROM Transaction_Data" 
DoCmd.RunSQL SQL 

當代碼運行時,系統會提示輸入值,在本例中爲'lValue'的日期。

我嘗試將Format(Transaction_Date, "mm/dd/yyyy")添加到select查詢中,但format函數中的引號會使整行看起來像是所有文本。

回答

1

數據庫引擎不知道VBA變量,所以假設它在看到變量名時必須是一個參數。

將變量的構建到SQL字符串中,並用#分隔符將其包圍以指示它是日期/時間值。

SQL = "SELECT ID, PO_Number, Vendor_Company, Incurred_By, " & _ 
    "Transaction_Type, #" & lValue & "# as Transaction_Date, " & _ 
    "Investment_ID, Notes, Quantity INTO tmp_Tran_Actual FROM Transaction_Data" 

如果你其實想Transaction_Date爲格式的字符串,請用單引號代替#值。

SQL = "SELECT ID, PO_Number, Vendor_Company, Incurred_By, " & _ 
    "Transaction_Type, '" & lValue & "' as Transaction_Date, " & _ 
    "Investment_ID, Notes, Quantity INTO tmp_Tran_Actual FROM Transaction_Data" 

或者,也許這是你腦子裏什麼都一起......

SQL = "SELECT ID, PO_Number, Vendor_Company, Incurred_By, " & _ 
    "Transaction_Type, Format(Transaction_Date, 'mm/dd/yyyy') as Transaction_Date, " & _ 
    "Investment_ID, Notes, Quantity INTO tmp_Tran_Actual FROM Transaction_Data" 
+0

最後我用最後的建議:格式(TRANSACTION_DATE, 'MM/DD/YYYY') –