2013-08-26 11 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") в запрос выбора, но кавычки в функции формата сделают целой строки похожими на весь текст.

ответ

1

Двигатель db не знает переменную 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

Я закончил с использованием последнего предложения: Format (TRANSACTION_DATE, 'мм/дд/гггг') –

Смежные вопросы