无法向 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).
我需要从 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).