Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 保存表单的操作_Ms Access_Vba_Ms Access 2010 - Fatal编程技术网

Ms access 保存表单的操作

Ms access 保存表单的操作,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,我们有一个Access 2010数据库,它充当MS SQL数据库的前端。当我们编辑表单中的数据时,需要运行一个过程,以便将某些数据正确地保存回SQL 我们的DB程序员添加了一个“保存按钮”来实现这一点。但这会导致另一个问题-在Access中有多种保存表单的方法- 导航到下一条记录 单击左侧的确认栏 创建新记录 搜索新记录 在功能区中使用命令 是否有任何方法可以将过程附加到实际的保存操作,以便无论用户如何移动到下一个窗体,该过程都可以运行 [更新] 下面是幕后的代码:第一个子节点连接到“保存”

我们有一个Access 2010数据库,它充当MS SQL数据库的前端。当我们编辑表单中的数据时,需要运行一个过程,以便将某些数据正确地保存回SQL

我们的DB程序员添加了一个“保存按钮”来实现这一点。但这会导致另一个问题-在Access中有多种保存表单的方法-

  • 导航到下一条记录
  • 单击左侧的确认栏
  • 创建新记录
  • 搜索新记录
  • 在功能区中使用命令
是否有任何方法可以将过程附加到实际的保存操作,以便无论用户如何移动到下一个窗体,该过程都可以运行

[更新]

下面是幕后的代码:第一个子节点连接到“保存”按钮。当然,第二个附加到表单
BeforeUpdate

Private Sub SaveRecord_Click()
'From NAME form
Form_BeforeUpdate False
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)
'used by NAME form
    [Last_Update] = Now
    '*********************
    Save_Record
    '*********************
    MName_ID = Me.Name_ID
    Me.Undo
    Cancel = True
    If Not IsNull(MName_ID) Then
        Jump_to_Name_ID MName_ID, True
    Else
    End If
End Sub

我想我只是不明白这个按钮是干什么用的。

所以我安装了一个MS Access 2010试用版,并最终找到了解决您问题的方法。它包括数据宏和一个我花了很长时间才找到的

以下是表格更改时如何运行VBA:

  • 创建具有公共函数的普通模块(尚未尝试类模块):
  • 模块名称:EventHandlers

    Public Function InsertEvent(ByVal id As Integer)
        MsgBox "inserted: " + CStr(id)
    End Function
    
  • 打开修改后应运行VBA的表格,并转到功能区中的“表格”

  • 点击“插入后”

  • 在“添加新操作”-选择框中,选择
    SetLocalVar
    (或从操作目录中选择)

  • 在Name字段中,插入模块的名称(在本例中为EventHandlers,正如我们前面创建的)

  • 在表达式字段中,写入函数名:
    InsertEvent([id])
    (其中[id]是要为其添加数据宏的表中的实际列)

  • 保存并关闭

  • 无论何时向表中插入内容,都会显示一个带有id的messagebox

    您可以对更新事件执行相同的操作。函数可以是这样的:

    Public Function UpdateEvent(ByVal oldValue As String, ByVal newValue As String)
        MsgBox oldValue + " changed to: " + newValue
    End Function
    
    数据宏将是

    操作:
    SetLocalVar

    名称:
    EventHandlers

    表达式:
    UpdateEvent([Old].[your_column_name];[your_column_name])


    注意:执行带有update、insert或delete的DoCmd.RunSQL将执行数据宏,然后询问用户是否确实要更新/插入/删除行。如果用户单击“取消”,则不会更改任何内容,但仍会执行数据宏。如果您还没有,您可能应该在实现数据宏之前禁用此检查。

    因此我安装了MS Access 2010试用版,并最终找到了解决问题的方法。它包括数据宏和一个我花了很长时间才找到的

    以下是表格更改时如何运行VBA:

  • 创建具有公共函数的普通模块(尚未尝试类模块):
  • 模块名称:EventHandlers

    Public Function InsertEvent(ByVal id As Integer)
        MsgBox "inserted: " + CStr(id)
    End Function
    
  • 打开修改后应运行VBA的表格,并转到功能区中的“表格”

  • 点击“插入后”

  • 在“添加新操作”-选择框中,选择
    SetLocalVar
    (或从操作目录中选择)

  • 在Name字段中,插入模块的名称(在本例中为EventHandlers,正如我们前面创建的)

  • 在表达式字段中,写入函数名:
    InsertEvent([id])
    (其中[id]是要为其添加数据宏的表中的实际列)

  • 保存并关闭

  • 无论何时向表中插入内容,都会显示一个带有id的messagebox

    您可以对更新事件执行相同的操作。函数可以是这样的:

    Public Function UpdateEvent(ByVal oldValue As String, ByVal newValue As String)
        MsgBox oldValue + " changed to: " + newValue
    End Function
    
    数据宏将是

    操作:
    SetLocalVar

    名称:
    EventHandlers

    表达式:
    UpdateEvent([Old].[your_column_name];[your_column_name])


    注意:执行带有update、insert或delete的DoCmd.RunSQL将执行数据宏,然后询问用户是否确实要更新/插入/删除行。如果用户单击“取消”,则不会更改任何内容,但仍会执行数据宏。如果您还没有,您可能应该在实现数据宏之前禁用此检查。

    因此我安装了MS Access 2010试用版,并最终找到了解决问题的方法。它包括数据宏和一个我花了很长时间才找到的

    以下是表格更改时如何运行VBA:

  • 创建具有公共函数的普通模块(尚未尝试类模块):
  • 模块名称:EventHandlers

    Public Function InsertEvent(ByVal id As Integer)
        MsgBox "inserted: " + CStr(id)
    End Function
    
  • 打开修改后应运行VBA的表格,并转到功能区中的“表格”

  • 点击“插入后”

  • 在“添加新操作”-选择框中,选择
    SetLocalVar
    (或从操作目录中选择)

  • 在Name字段中,插入模块的名称(在本例中为EventHandlers,正如我们前面创建的)

  • 在表达式字段中,写入函数名:
    InsertEvent([id])
    (其中[id]是要为其添加数据宏的表中的实际列)

  • 保存并关闭

  • 无论何时向表中插入内容,都会显示一个带有id的messagebox

    您可以对更新事件执行相同的操作。函数可以是这样的:

    Public Function UpdateEvent(ByVal oldValue As String, ByVal newValue As String)
        MsgBox oldValue + " changed to: " + newValue
    End Function
    
    数据宏将是

    操作:
    SetLocalVar

    名称:
    EventHandlers

    表达式:
    UpdateEvent([Old].[your_column_name];[your_column_name])

    注意:执行带有update、insert或delete的DoCmd.RunSQL将执行数据宏,然后询问用户是否确实要更新/插入/删除行。如果用户单击“取消”,则n