【问题标题】:Populating Access table with information from a Form使用表单中的信息填充 Access 表
【发布时间】:2021-03-11 19:00:06
【问题描述】:

我在 Access 中有一个表格,我想从该表格中转移到表格中。 我无法使用表单,因为我需要使用信息创建图表,结果您无法在 Access 中使用源 - 表单创建图表。 我试图将表单中的字段绑定到表中,但这会将值转移到表中的第一行,并且我需要每个新值都转到下一行,因此绑定选项对我不起作用。

我试图从表单中的每个控件中获取值并将其传输到表中,但我收到一个错误:INSERT INTO 语句中的 SYNTAX ERROR

Sub PopulateTable()

Dim sSQL As String

sSQL = "Insert INTO [Levels_Shipped_POF] (Level,POF_Pluquo,Actual_Shipped,Buffer) VALUES (5,Forms![Main_Input_Form].[POF_LVL5].Value,Forms![Main_Input_Form].[Shipped_5].Value,Forms![Main_Input_Form].[Buffer_5].value)"
DoCmd.RunSQL (sSQL)
DoCmd.GoToRecord , , acNewRec
                                                                                                

End Sub

表单的名称是 - Main_Input_Form 控件名称 - POF_LVL5、POF_LVL6、POF_LVL7…… 已发货_5、已发货_6、已发货_7…… 缓冲区_5、缓冲区_6、缓冲区_7

【问题讨论】:

  • 我没有看到任何语法错误并且无法复制。但是,LEVEL 是保留字。尝试用括号括起来:[Level].
  • 为什么会有带序号后缀命名的控件?
  • 在我将 Level 包含在 [] 中之后,它终于起作用了。感谢您的提示@June7

标签: sql vba ms-access


【解决方案1】:

LEVEL 在 JET 和 ODBC 中是保留的。使用保留字作为对象名称时可能会出现意外结果。此外,使用空格和标点符号/特殊字符也会导致问题。如果这些功能符合命名约定,请将名称括在括号中以强制其被接受:[Level]。建议不要在命名约定中使用。

但是,正确使用绑定形式将不需要任何代码。在输入新数据之前移动到新记录行和/或将表单 DataEntry 属性设置为是。这将始终打开新记录行的表单 - 不会显示现有记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多