2014-04-14 55 views
2

我正在使用VBA宏創建表。首先,我輸入日期「PeriodEnd」,該日期使用查詢過濾基表。然後,我正在製作第二個表格,並使用(a)查詢結果填充該表格,以及(b)基於查詢和其他相關表格的記錄約30個計算字段。使用變量來命名我正在製作的表

我的問題是,我試圖把PeriodEnd日期放在表名中,我似乎無法獲得語法權限。我是VBA初學者,所以感謝您的幫助。我的VBA看起來像如下:

.... 
Dim db as DAO.Database 
Dim PeriodEnd as Date 
Dim PerStr as String 

Set db = CurrentDb() 
PeriodEnd = #12/31/2013# 
PerStr = Format(PeriodEnd, "yyyy-mm-dd") 

db.Execute "CREATE TABLE TblName_" & PerStr _ 
& " (Field1 as LONG) 

我和語法運行此其中表名是靜態的,我沒有得到任何錯誤。當我使用變量表名稱運行時,我得到「運行時錯誤'3290':CREATE TABLE語句中的語法錯誤。」

另外,有沒有更好的方法來構造這個?這些表中唯一的區別是期末結束日期 - 以及不同期間結束日期對我在VBA中形成的基礎計算(SQL中不支持的函數)的影響。

任何關於這應該被結構化爲查詢還是報告(沒有經驗的報告)的建議?

+0

可能這會更好,因爲只有一個表有兩個字段:period_end;和Field1?在我看來,你提出的每個表名都可以作爲一個主表中的字段來處理。 – HansUp

回答

2

您正試圖創建一個名稱中包含破折號的表(由於日期格式)。您需要將該名稱括起來。

db.Execute "CREATE TABLE [TblName_" & PerStr _ 
    & "] (Field1 as LONG)" 

還要確保包括引號在聲明的結尾就像我上面一樣。

但請考慮使用變量來保存您的CREATE聲明。然後你可以用Debug.Print這個變量來檢查你要求db引擎執行的語句。

Dim strDdl As String 
strDdl = "CREATE TABLE [TblName_" & PerStr & "] (Field1 as LONG)" 
Debug.Print strDdl 
db.Execute strDdl 
相關問題