【问题标题】:Access adding records from one table访问从一个表添加记录
【发布时间】:2015-02-21 04:55:58
【问题描述】:

我有一个表 EmpRequirements,字段是:

EmpRequirementsID (AutoNumber), 
EmpID (from the Employees Table), 
RequirementID (from the Requirement Table), 
RequirementName (from the Requirement Table), 
Received_OnFile (Check), 
NotApplicable (Check), 
DateReceived (Date), 
ExpirationDate (Date)

我想要做的是有一个按钮(添加需求),单击该按钮将为我的表单上当前的员工添加需求表(需求 ID 和 RequirementName)中的所有数据。如果我添加一个要求,我希望能够单击该按钮,它将向该员工添加当前对该员工不存在的任何和所有要求。 然后,这将在表单中显示为子表单数据表,用户可以在其中编辑 EmpRequirements 中的所有其他字段。 我曾尝试使用追加和更新,但迄今为止还没有找到答案。我想知道这是否只是一个易于编写的宏。

我已尝试使用此语句添加记录,我已退出错误处理程序,并收到运行时错误 3134 - 语法错误插入语句

Private Sub Add_Click()

'  On Error GoTo Err_Add_Click

    Dim strSQL1 As String

    strSQL1 = "INSERT IGNORE INTO [EmpRequirements]( [EmpID], [RequirementID], [RequirementName] )" & _
          "SELECT DISTINCT [Employees].[EmpID], [Requirement].[RequirementID], [Requirement].[RequirementName]" & _
          "FROM [Employees], [Requirement]  " & _
          "WHERE (((Employees.EmpID)=[Forms]![Employee Details]![EmpID]));"

   DoCmd.RunSQL strSQL1

 [Forms]![Employee Details].Refresh          'Refresh after update EmpRequirements Subform

'Exit_Add_Click:                             ' Label to resume after error.
'     Exit Sub                               ' Exit before error handler.
'Err_Add_Click:                              ' Label to jump to on error.
'     MsgBox Err.Number & Err.Description    ' Place error handling here.
'     Resume Exit_Add_Click                  ' Pick up again and quit.


End Sub

这会起作用吗?您能帮忙解决错误吗?

【问题讨论】:

  • 我已经尝试使用这个语句来更新表格
  • 访问不支持INSERT IGNORE
  • 非常感谢您提供的信息
  • 我知道,如果我删除“忽略”,它将添加记录而不是任何重复项,但是确实会尝试添加所有记录,当然,因为我已经设置了表 [EmpRequirements].[EmpID ] 和 [EmpRequirements].[RequirementID] 作为关键字段,它不会添加重复项。我想做的是忽略重复项并仅添加新记录。我是否在代码中遗漏了会使用“不存在”的行谢谢

标签: ms-access-2010


【解决方案1】:

这是我想出的答案

私有子 Add_Click()

On Error GoTo errHandler

Dim strSQL1 As String

DoCmd.SetWarnings False

strSQL1 = "INSERT INTO EmpRequirements ( EmpID, RequirementID, RequirementName ) " & _
            "SELECT SQ1.EmpID, SQ1.RequirementID, SQ1.RequirementName " & _
            "FROM (SELECT Employees.EmpID, Requirement.RequirementID, Requirement.RequirementName " & _
            "FROM Employees, Requirement WHERE (((Employees.EmpID)=[Forms]![Employee Details]![EmpID]))) " & _
            "AS SQ1 LEFT JOIN EmpRequirements ON (SQ1.EmpID=EmpRequirements.EmpID) " & _
            "AND (SQ1.RequirementID= EmpRequirements.RequirementID) " & _
            "WHERE EmpRequirements.RequirementID IS NULL;"

DoCmd.RunSQL strSQL1

DoCmd.SetWarnings True

[Forms]![Employee Details].Refresh '更新后刷新 EmpRequirements 子表单

Exit Sub ' 在错误处理程序之前退出。

errHandler: ' 出错时跳转到的标签。 MsgBox "错误 " & Err.Number & ": " & Err.Description & " in " & _ VBE.ActiveCodePane.CodeModule, vbOKOnly, "错误"

结束子

谢谢大家

【讨论】:

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