无法向 ADO 记录集添加字段 - 在此上下文中不允许执行此操作

Cant add fields to ADO recordset - this operation is not allowed in this context

我需要从 Oracle 服务器向现有 ADO 记录集添加字段。这是我试过的代码,但出现错误

Operation not allowed in this context

With ADORec
Set .ActiveConnection = ADOConn
.Source = SQL
.LockType = adLockOptimistic
.CursorType = adOpenKeyset
.CursorLocation = adUseClient
.Open
End With
ADORec.AddNew
ADORec.Fields.Append "calcField", adInteger, , adFldUpdatable

SQL 获取 ID 列表。

如何在我的记录集中获得一个额外的列,以便我可以在 vba 内进行 运行 计算?

或者: 首先,您对这个问题的处理方法是什么?

您很少(=几乎从不)向 ​​ADODB 记录集添加字段。

默认情况下,ADODB 记录集绑定到它来自的 table,对其进行更改应该对 table 进行更改。这显然也不是你的意图。虽然您可以切断连接或将设计和数据复制到未链接的记录集,但这往往会导致麻烦。

此外,.AddNew是指添加一条新记录,而不是新字段。

如果要在窗体中显示计算结果,请在控件源中进行计算。拆分表格允许这样做。

只需添加一个控件来包含您的计算结果,并将控件源设置为 =MyFunctionToDoCalculation(InpArguments)

不过,作为一般规则,如果可以的话,出于性能和可靠性的考虑,请在 SQL 中进行计算。

如果您想执行 multi-row 计算(例如移动平均线),请发表评论,我将分享一个复杂得多的方法,该方法也有更多 side-effects(例如 sorting/filtering/refreshing).