0

自从我不得不对 Access 项目做任何事情以来已经有一段时间了,如果这很容易,请原谅我。

我有一个 Access 2007 数据库,已将其转换为 Access 2007 项目。我已经在 SQL 2008 服务器上创建了所有表和视图,授予了所有必要的权限并开始测试。

我遇到问题的地方是,我有一个用于更新数据的表单。表单来自视图(视图中的所有表都有主键)并且视图是模式绑定的。在某些字段的表单上,我有一个“更改”事件处理程序,它更新了一个“Last_Worked”字段,因此我们可以跟踪这些字段上次更改的时间。(“Last_Worked”字段在 SQL 服务器中是“datetime”)事件处理程序基本上是“Last_Worked = Now()”。

问题是,对于那些我有“更改”事件处理程序的字段,我不能在这些字段中输入任何内容,我开始输入并且字段中没有显示任何内容。当我检查表中的“Last_Worked”字段时,它正在更新,但我试图从表单中更改的字段没有改变。

我可以更新数据并从数据视图插入新记录,因此提供表单的视图不是只读的。如果我删除事件处理程序,问题就会消失,但我需要在更新这些字段时记录。我尝试在事件处理程序中执行“Me!Last_Worked = Now()”和“Me!Last_Worked.Value = Now()”并遇到同样的问题,我无法更新/编辑这些字段。

这在 Access 中完美运行,我什至创建了一个空白的 Access 数据库,将表单复制过来,将链接表创建到服务器中的视图,并且它工作正常。它只是不能作为访问项目工作。

任何帮助,将不胜感激。

4

1 回答 1

0

当你说事件处理程序时,你的意思是你已经设置了控制源吗?如果您需要控制数据输入,则不能这样做。另请注意,更改事件针对每个小的更改运行。您可以对新记录使用默认值,也可以在某个相关控件的更新事件中运行某个 VBA。我认为在这种情况下你需要:

Private Sub Form_BeforeUpdate(Cancel As Integer)
    Me.LastChanged = Now()
End Sub
于 2011-12-20T21:08:37.507 回答