我正在进入VBA programing for Access,我遇到了一些困难
我想要实现的目标是:基于一个表(主表)中的每个条目,将创建其他表,并在所有这些表中输入某些值。
以下是表格模板创建的代码
Function GenerateFPCTable(varRecordFunc As Variant, intColumnFunc As Integer, intRowFunc As Integer)
'' Open Current Database
Set dbs = CurrentDb
Dim Flag As Boolean
'' Check if the table exists already
Flag = TableExists(varRecordFunc(intColumnFunc, intRowFunc) & "FPRd")
MsgBox (Flag)
''If True, Exit the function without overwriting.
If Flag Then
Exit Function
Else
''If false, Create template for entering data
Set tbl = dbs.CreateTableDef(varRecordFunc(intColumnFunc, intRowFunc) & "FPRd")
Set fld = tbl.CreateField("CT", dbText, 255)
tbl.Fields.Append fld
Set fld = tbl.CreateField("Str", dbInteger)
tbl.Fields.Append fld
Set fld = tbl.CreateField("FRMBldg", dbText, 255)
tbl.Fields.Append fld
Set fld = tbl.CreateField("FRMEqpt", dbText, 255)
tbl.Fields.Append fld
Set fld = tbl.CreateField("TOBldg", dbText, 255)
tbl.Fields.Append fld
Set fld = tbl.CreateField("TOEqpt", dbText, 255)
tbl.Fields.Append fld
Set fld = tbl.CreateField("Prt", dbText, 255)
tbl.Fields.Append fld
Set fld = tbl.CreateField("Srvc", dbText, 255)
tbl.Fields.Append fld
Set fld = tbl.CreateField("Notes", dbText, 255)
tbl.Fields.Append fld
dbs.TableDefs.Append tbl
Call CreateFPCTableEnteries(varRecordFunc, intRowFunc)
dbs.TableDefs.Refresh
End If
End Function
然后我调用一个单独的函数将数据填充到这个新表中。
Public Function CreateFPCTableEnteries(varRecordFunc As Variant, intRowFunc As Integer)
intNumColumns = UBound(varRecordFunc, 1) + 1
Dim strCount As Integer
strandCount = 0
Set dbs = CurrentDb
Dim qrtStr As String
qryStr = "INSERT INTO " & varRecordFunc(0, intRowFunc) & "FPRd" _
& "(Str) VALUES (" & strandCount & ")"
Debug.Print qryStr
DoCmd.RunSQL (qryStr)
End function
我得到run-time error 3134 Syntax error in INSERT INTO statement
。 debug语句显示以下条目
INSERT INTO Q-0003FPRd(Str) VALUES (0)
我试图了解错误的来源?此外,我没有使用标准的SQL方法来创建表?这可能是一个潜在的问题吗?我读到连字符会导致问题,可能就是这样吗?
提前致谢
答案 0 :(得分:0)
编辑:
问题是包含“-
”
在刷新tabledef之前看起来像是在插入数据。尝试将其更改为:
...
dbs.TableDefs.Append tbl
dbs.TableDefs.Refresh
Call CreateFPCTableEnteries(varRecordFunc, intRowFunc)
...
听起来非常像你应该使用带链接键的单个附加表来代替!您确定your tables are normalized?