我在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));
}
答案 0 :(得分: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语句。< / p>
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,没有证据表明它的设计错误 。 ; - )