在 VBA 中,您可以像这样遍历编号的表名...
Dim strTable As String
Dim i As Long
For i = 0 To 20
strTable = "table_" & CStr(i)
Debug.Print strTable
Next i
但是你想对每个表名做一些事情而不是打印它。所以说你已经完成了你的CREATE TABLE
陈述。也许它看起来像这样......
CREATE TABLE table_name (
field_1 INTEGER PRIMARY KEY,
field_2 TEXT(255));
因此,您可以将该 DDL 语句加载到一个字符串变量中,然后每次通过您的For
循环替换table_name
为 的当前值strTable
,然后执行该 DDL 语句。
Dim strTable As String
Dim i As Long
Dim strSql As String
strSql = "CREATE TABLE table_name (" & vbCrLf & _
"field_1 INTEGER PRIMARY KEY," & vbCrLf & _
"field_2 TEXT(255));"
For i = 0 To 20
strTable = "table_" & CStr(i)
CurrentProject.Connection.Execute Replace(strSql, _
"table_name", strTable)
Next i
该Replace()
功能首先在 Access 2000 中可用。如果您使用的是较旧的 Access 版本,您将需要不同的方法来处理您的 SQL 字符串。
如果你想执行一个ALTER TABLE
语句,你可以这样做。
所以我认为用 VBA 可以很容易地做你想做的事。但是我不确定你是否应该这样做。具有相同结构的多个表通常是表示设计错误的危险信号。没有证据表明您的情况是设计错误。OTOH,没有证据表明这不是设计错误。;-)