Spotfire IronPython修改数据表标记行值报错求助
Spotfire IronPython 写入标记行数据报错解决
问题根源
你使用的DataValueCursor是只读游标,它的CurrentValue属性仅用于读取数据,不支持赋值修改。要向数据表写入数据,必须使用Spotfire专门提供的可更新游标DataColumnUpdateCursor。
修正后的代码
from Spotfire.Dxp.Data import * dataTable = Document.Data.Tables["myTable"] # 创建可更新的游标,而非只读的DataValueCursor updateCursor = DataColumnUpdateCursor.CreateFormatted(dataTable.Columns["myColumn"]) markings = Document.ActiveMarkingSelectionReference.GetSelection(dataTable) some_string = "some_string" # 开启数据表更新事务,Spotfire要求批量修改必须在事务中执行 with dataTable.BeginUpdate() as updater: # 遍历标记行,通过更新游标写入数据 for row in dataTable.GetRows(markings.AsIndexSet(), updateCursor): updater.SetValue(updateCursor, some_string)
关键说明
- 替换
DataValueCursor为DataColumnUpdateCursor:这是支持写入操作的游标类型 - 必须用
BeginUpdate()创建更新事务:Spotfire为了保证数据一致性,要求所有批量数据修改都在事务上下文内完成 - 调用
updater.SetValue()完成写入:仅操作游标无法完成数据提交,需要通过更新器方法将值同步到数据表中
内容的提问来源于stack exchange,提问作者dogfrog
相关产品推荐
相关产品推荐

