1

我在 Access 中创建了一个数据库,该数据库将有许多相同的相似表,并且它们的名称都将按顺序命名,例如 table_0、table_1 ...

我想知道是否有一种方法可以在 VBA 中创建一个循环来首先制作表格,然后它们会改变它们,例如更容易添加一个字段。

因此,如果我要制作表格,这将是过程,但在 VBA 中

while(i=0, i<20,i++){
CREATE TABLE  table_i(
field_1 int PRIMARY KEY,
field_2 CHAR(255));
}
4

1 回答 1

2

在 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,没有证据表明这不是设计错误。;-)

于 2012-07-12T00:58:19.790 回答