2015-12-31 45 views
0

長時間用戶第一個問題:Spotfire:使用IronPython更改計算列中的公式

我正在嘗試使用ironpython更新Spotfire計算列中的公式。我有一個名爲tbl_test的表,其中計算列'Biz_rule'。我創建一個字符串名爲str_statement,並嘗試使用它來代替用下面的代碼caluclated列的表達式:

calc_col = tbl_test.Columns.Item['Biz_rule'] 
calc_col = calc_col.As<CalculatedColumn>() 
calc_col.Expression = str_statement; 

我碰到下面的錯誤。

Traceback (most recent call last): 
    File "Spotfire.Dxp.Application.ScriptSupport", line unknown, in ExecuteForDebugging 
    File "<string>", line 25, in <module> 
    AttributeError: 'bool' object has no attribute 'Expression' 

我假設,因爲

calc_col.As<CalculatedColumn>() 

返回一個布爾值,指示操作是否成功。如何獲得計算列的實例,以便我可以更新表達式?

回答

0
tbl_test = Document.Data.Tables['data source scott'] 
calc_col = tbl_test.Columns.Item['Job Job'] 
calc_col.Properties.SetProperty('Expression','[JOB]') 

上面的代碼適用於我。你試圖做什麼? 問題是你爲什麼要使用

'calc_col.As<CalculatedColumn>()' 

+0

這就像一個魅力!因爲tbl_test.Columns.Item []返回一個DataColumn,我只是沒有意識到我可以訪問Expression屬性,而不需要對象是'CalculatedColumn'。我基本上試圖使用As 進行類型轉換。非常感謝你! –

+0

http://stackoverflow.com/help/someone-answers –

0

我首先嚐試更新現有計算。 如果失敗我嘗試刪除第1列(如果它被凍結),然後我添加一個新的列與計算。

的取代基本是: lc_myField = ldt_tbl.Columns [ '列名'] AsCalculatedColumn lc_myField.Expression = ls_CalcExpression

加載的基礎是: ldt_tbl.Columns.AddCalculatedColumn(」列名',ls_CalcExpression)

其中ldt_tbl是數據表,並且ls_calcExpression包含您的表達式。

+0

我嘗試了代碼的替換部分,它給我和錯誤,該對象不包含'表達'屬性 –

+0

路易斯,你可以發佈你做了什麼,不只是代碼部分,而是完整的代碼? –