gpt4 book ai didi

ms-access - .oldValue 控件属性上的错误 3251

转载 作者:行者123 更新时间:2023-12-04 16:47:12 27 4
gpt4 key购买 nike

我目前正致力于向 MS-Access 2010 数据库添加审计跟踪,但我正在努力解决

"error 3251 : operation is not supported for this type object"

这是我的审计跟踪模块的代码,主要是来自网络的整理代码:

Public Function auditChanges(RecordID As String, userAction As String, cForm As Form)
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim ctl As Control
Dim userLogin As String

Set db = CurrentDb
Set rst = db.OpenRecordset("SELECT * FROM T_AUDIT")
userLogin = getCurrentUser

Select Case userAction
Case "New"
With rst
.AddNew
![Date] = Now()
![utilisateur] = userLogin
![nomFormulaire] = cForm.Name
![Action] = userAction
![RecordID] = cForm.Controls(RecordID).Value
.Update
End With
Case "Delete"
With rst
.AddNew
![Date] = Now()
![utilisateur] = userLogin
![nomFormulaire] = cForm.Name
![Action] = userAction
![RecordID] = cForm.Controls(RecordID).Value
.Update
End With
Case "Edit"
For Each ctl In cForm.Controls
If (ctl.ControlType = acTextBox) Or (ctl.ControlType = acComboBox) Or (ctl.ControlType = acCheckBox) Then
If (Nz(ctl.Value, "") <> Nz(ctl.OldValue, "")) Then
With rst
.AddNew
![Date] = Now()
![utilisateur] = userLogin
![nomFormulaire] = cForm.Name
![Action] = userAction
![RecordID] = cForm.Controls(RecordID).Value
![champs] = ctl.ControlSource
![ancienneValeur] = ctl.OldValue
![nouvelleValeur] = ctl.Value
.Update
End With
End If
End If
Next ctl
End Select
rst.Close
db.Close
Set rst = Nothing
Set db = Nothing
End Function

此函数在 beforeUpdate 中调用我要跟踪的表单事件。

The error is fired when I try to edit a bound textbox. And the line If (Nz(ctl.Value, "") <> Nz(ctl.OldValue, "")) Then is the line provoking the error

该表单基于以一对多关系链接的 2 个表。当我编辑表格中关系的“一”部分的字段时,该函数正常工作,但当我想从“多”部分编辑字段时,它会抛出错误。

我希望我足够清楚,谢谢

编辑:更多细节

我的表格是基于那个请求的:

SELECT T_REVISION.ID_revision, T_REVISION.fk_ID_proposition, T_REVISION.numero, T_REVISION.fk_etat_revision, T_REVISION.EOTP, T_PROPOSITION.reference_simple, T_PROPOSITION.libelle, T_REVISION.description_localisation
FROM T_PROPOSITION INNER JOIN T_REVISION ON T_PROPOSITION.ID_proposition = T_REVISION.fk_ID_proposition
ORDER BY T_REVISION.numero DESC;

错误是从 T_PROPOSITION.reference_simple 触发的控制。错误 3251 发生时:我尝试编辑 T_REVISION.EOTPT_REVISION.description_localisation 字段。当我编辑 T_PROPOSITION.reference_simple, T_PROPOSITION.libelle 时,错误 3251 不会发生!

所以:我能够编辑来自关系“一”方的值,但是当我想编辑“多”方时,我似乎无法 Access oldValue 属性

我该如何解决这个问题?

最佳答案

不完全是答案,但是评论区不适合...

如果在 If (Nz(ctl.Value, "") <> Nz(ctl.OldValue, "")) Then
之前添加 2 行:

debug.print ctl.Name, ctl.value
debug.print ctl.name, ctl.oldvalue

这将允许您查看错误是否链接到特定控件和特定属性,并缩小您的搜索范围。


编辑:在您编辑您的 OP 表明问题出现在您加入的“许多”方面之后,我认为您应该将您的表格更改为 "main form - subform" architecture .这将使您能够正确跟踪每个 TABLE 的更新。

关于ms-access - .oldValue 控件属性上的错误 3251,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39040659/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com