运行时错误3134和创建新表(VBA)

时间:2015-08-11 22:58:43

标签: sql vba ms-access

我正在进入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方法来创建表?这可能是一个潜在的问题吗?我读到连字符会导致问题,可能就是这样吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

编辑: 问题是包含“-

的表名

在刷新tabledef之前看起来像是在插入数据。尝试将其更改为:

...
dbs.TableDefs.Append tbl
dbs.TableDefs.Refresh
Call CreateFPCTableEnteries(varRecordFunc, intRowFunc)
...

听起来非常像你应该使用带链接键的单个附加表来代替!您确定your tables are normalized?