【问题标题】:Log changes in a vb6 recordset在 vb6 记录集中记录更改
【发布时间】:2012-07-05 14:12:18
【问题描述】:

我有一个带有数据网格的 adodc 对象,以便在 vb6 中有一个可编辑的表。 我必须将用户所做的任何更改存储在数据库中。

第一个想法是使用Sub grdDataGrid_Click() 来获取正在使用的行,但是为此,我需要知道该行中是否有任何单元格被修改并获取它的原始值和新值。 有没有办法检查它? 正如我所见,记录集有 Will 和 Complete 事件,但我以前从未使用过它们。他们是否能够获取已更改单元格的旧值和新值? 我还考虑过在我正在使用的表上的 oracle 中使用触发器(因为它可以获取旧数据和新数据),但在那种情况下,我无法获取已登录并进行更改的用户。

我愿意接受任何想法。不一定只在vb6中,我可以使用存储过程、函数、触发器,如果​​一个东西还不够的话。

【问题讨论】:

    标签: logging vb6 recordset


    【解决方案1】:

    尝试查看 WillChangeRecord 事件。它会告诉您为什么记录正在/正在更改,并且它具有将更改的记录的记录集。你可以看看微软的文档here。

    Adodc1_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
    

    【讨论】:

    • 感谢您的回答,这看起来很有希望。我尝试使用它,但我收到错误消息,每当我在此事件中执行某些操作时:“过程声明与具有相同名称的事件或过程的描述不匹配”我也找不到如何获取值我将要更新的记录。抱歉,我对 adodc 事件有点陌生。
    • 当您将控件放到表单上时,会自动包含事件声明。只需单击它并将您的代码放入程序中。您不能更改声明,否则您将收到上述错误。要获取值,您需要将 pRecordset 记录中的值与数据源中的值进行比较。
    • 是的,这就是我想避免的,比较记录集。我将有大约 60 列和 10.000 行,我希望有更快的方法来做到这一点。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多