【问题标题】:Update another table when field is changed更改字段时更新另一个表
【发布时间】:2015-04-29 22:30:35
【问题描述】:

我有一个包含“DateProduced”字段的表单。绑定到它的表称为“报告”。

我尝试将更新后事件添加到此字段,并希望此事件更新 Quantity 表中的“DateProduced”字段(如果两者的 ID 匹配)。

Me![Text0] 显示报告字段中的 ID

Me![Text4] 显示 DateProduced from Report 字段。

事件代码如下。

Private Sub Text4_AfterUpdate()
Dim strSQL As String

strSQL = "UPDATE Quantity " _
& "SET [DateProduced] = (#" & Me![Text4] & "#) " _
& "WHERE ID = (" & Me![Text0] & ")"

DoCmd.RunSQL strSQL
End Sub

但我不能成功。

【问题讨论】:

  • 这似乎与stackoverflow.com/questions/28747227/… 非常相似。此外,您没有包含任何错误消息或您的 MS Access 版本。
  • 我使用的是 Access 2003,它没有给我任何错误消息,也没有更新表格
  • 在这种情况下,尽管采取步骤,将 strSQL 打印到即时窗口,并在查询设计中对其进行测试。我怀疑问题出在这里:& "WHERE ID = (" & Me![Text0] & ")",一方面,为什么是括号?
  • 另外,您很可能在日期(#" & Me![Text4] & "#) " 遇到语言环境问题。试试SET [DateProduced] = #" & Format(Me![Text4],"yyyy/mm/dd") & "# "
  • 它说“查询表达式中日期的运行时错误'3075'语法错误”

标签: sql vba ms-access


【解决方案1】:

对于可以将 dd/mm 互换为有效日期的值,该日期格式将失败。它应该是:

Private Sub Text4_Exit(Cancel As Integer)

    Dim strSQL As String

    strSQL = "UPDATE Quantity " _
    & "SET [DateProduced] = #" & Format(Me!Text4.Value, "yyyy\/mm\/dd") & "# " _
    & "WHERE [ID] = " & Me![Text0].Value & ";"

    DoCmd.RunSQL strSQL

End Sub

注意:您应该将 Text0 等的名称更改为有意义的名称。

【讨论】:

    【解决方案2】:

    我使用以下代码使其工作。谢谢

    Private Sub Text4_Exit(Cancel As Integer)
    Dim strSQL As String
    strSQL = "UPDATE Quantity " _
    & "SET [DateProduced] = #" & Format(Me.Text4.Value, "dd-mm-yyyy") & "#" _
    & "WHERE [ID] = (" & Me![Text0] & ");"
    
    DoCmd.RunSQL strSQL
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-05
      • 1970-01-01
      • 2019-11-18
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多