The code below is returning an error: I didn't find this error 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]
Certainly I do something wrong. My goal is to iterate tru all the tables and modify the naming of some columns. I want them modified as per table I called discTable.
Adding full error plus print results as per what code generates.
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)
You will get this error if you try and rename a column to one already used in the table (2 columns in a given table can't have the same name). I would suggest figuring out which table is causing an error and double checking that there isn't already a column named 'Subject identification [Individual/Pool]'
Thanks, Jacek!