ValueError:名称'主题标识[个人/池]'已存在于列集合中。参数名称:value

时间:2018-06-13 08:17:36

标签: python ironpython spotfire

以下代码返回错误: 我没有发现这个错误googlying ..

import datetime
from Spotfire.Dxp.Data import IndexSet
from Spotfire.Dxp.Data import RowSelection
from Spotfire.Dxp.Data import IndexSet, DataValueCursor, RowSelection
from Spotfire.Dxp.Data.DataType import DateTime

dictTable = Document.Data.Tables['Column renaming mapping']
dictionary = dict()
key = 0
value = 0
colNum = 0
cursorKeys = DataValueCursor.CreateFormatted(dictTable.Columns['PDW short name'])
cursorValues = DataValueCursor.CreateFormatted(dictTable.Columns['PDW long name'])
rowCount = dictTable.RowCount
rowsToInclude = IndexSet(rowCount,True)

for row in dictTable.GetRows(rowsToInclude,cursorKeys,cursorValues):

    rowIndex = row.Index
    key =   cursorKeys.CurrentValue
    print key
    val    = cursorValues.CurrentValue
    print val
    dictionary[key] = val

for table in Document.Data.Tables:

    for col in table.Columns:

        if col.Name in dictionary:
            col.Name = dictionary[key]

当然我做错了什么。 我的目标是迭代所有表并修改某些列的命名。 我希望根据表格修改它们,我称之为discTable。

根据代码生成的内容添加完整错误和打印结果。

TSRECID
TS Record ID
STUDYKEY
PDW unique ID
INSERTDT
Record entry date
UPDATEDT
Record update date
AUDITID
Transaction unique ID
SPONSOR
Sponsor
PSMSNAME
Preclinical Study Management System
STUDYID
Study ID
STUDYTITLE
Study title
PROJID
PIMS project ID
PROJDESC
PIMS project description
ETHICPROJ
PIMS ethical project
STUDYCAT
PIMS study category
STUDYTP
PIMS study type
PROTSTATUS
PIMS protocol status
STDPROTID
PIMS standard protocol ID
RATIONALE
Scientific Rationale
PRIMOBJECTIVE
Primary objective
SECOBJECTIVE
Secondary objective
NBSUBJECTS
Number of subjects
SUBLVLID
Subject identification [Individual/Pool]
Traceback (most recent call last):
  File "Spotfire.Dxp.Application.ScriptSupport", line unknown, in ExecuteForDebugging
  File "<string>", line 31, in <module>
  File "Spotfire.Dxp.Data", line unknown, in set_Name
ValueError: The name 'Subject identification [Individual/Pool]' already exists in the column collection.
Parameter name: value

System.ArgumentException: The name 'Subject identification [Individual/Pool]' already exists in the column collection.
Parameter name: value
   at Spotfire.Dxp.Data.DataColumn.set_Name(String value)
   at _stub_$25##25(Closure , CallSite , Object , Object )
   at Microsoft.Scripting.Actions.MatchCaller.Call2[T0,T1,TRet](Func`4 target, CallSite site, Object[] args)
   at Microsoft.Scripting.Actions.CallSite`1.UpdateAndExecute(Object[] args)
   at Microsoft.Scripting.Actions.UpdateDelegates.Update2[T,T0,T1,TRet](CallSite site, T0 arg0, T1 arg1)
   at <module>$4##4(Closure , Scope , LanguageContext )
   at Microsoft.Scripting.SourceUnit.Execute(Scope scope, ErrorSink errorSink)
   at Spotfire.Dxp.Application.ScriptSupport.IronPythonScriptEngine.ExecuteForDebugging(String scriptCode, Dictionary`2 scope, Stream outputStream)

1 个答案:

答案 0 :(得分:2)

如果尝试将列重命名为表中已使用的列(给定表中的2列不能使用相同的名称),则会收到此错误。我建议找出哪个表导致错误,并再次检查是否没有名为“主题标识[个人/游泳池]”的列

谢谢,贾塞克!