我从一个表中抓取字段行并为每一行创建一个新表。新表的名称将等于它们对应的行。
这是我的代码:
Option Compare Database
Public Function createTables()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim rst As DAO.Recordset
Dim fld As DAO.Field
Dim strSQL As String
strSQL = "Select SKUS from SKUS"
Set db = CurrentDb()
Set rst = db.OpenRecordset(strSQL)
Set fld = rst.Fields("SKUS")
'MsgBox fld.Value
rst.MoveFirst
Do While Not rst.EOF
Set tdf = db.CreateTableDef(fld.Value)
Set fld = tdf.CreateField("SKUS", dbText, 30)
tdf.Fields.Append fld
Set fld = tdf.CreateField("Count", dbInteger)
tdf.Fields.Append fld
db.TableDefs.Append tdf
rst.MoveNext
Loop
End Function
问题是在代码的第一次迭代(创建第一个表)之后,它给出了一个错误“无效操作”指向该行
...
Set tdf = db.CreateTableDef(fld.Value)
...
为什么你认为这是?我有一种感觉,因为我需要重新设置fld或rst,但我不确定。
任何人都可以帮我解决这个问题吗? 谢谢!
答案 0 :(得分:2)
您似乎没有从rst
读取任何新元组,因此将CreateTableDef
重复调用相同的值。尝试更改此内容:
[...]
Set fld = rst.Fields("SKUS")
rst.MoveFirst
Do While Not rst.EOF
Set tdf = db.CreateTableDef(fld.Value)
[...]
进入这个:
[...]
rst.MoveFirst
Do While Not rst.EOF
Set fld = rst.Fields("SKUS")
Set tdf = db.CreateTableDef(fld.Value)
[...]
...如果您打算根据SKUS表中的每个元组创建一个表。