2

我创建了一个 VBA 函数,它从 Access 表中选择一些数据并将该数据放入临时表中。我想使用以下代码更改日期列的格式,以便日期具有前导“0”。

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")到选择查询中,但格式函数中的引号会使整行看起来都是文本。

4

1 回答 1

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"
于 2013-08-26T16:18:30.633 回答