、これが私の提案のようになります。
「Append」と表示されたボタン、入力フィールド(複数行)、およびRefresh/Continueボタンの付いたテキスト領域があります。
は、ユーザー、裁判を見つけ、選択的評価をマークして、追加ボタンを押し、次のようなスクリプトにするには、下のフィルタを持っている:
from Spotfire.Dxp.Data import *
crossSource = Document.Data.Tables["TrialsAndAssessments"]
rowIndexSet=Document.ActiveMarkingSelectionReference.GetSelection(crossSource).AsIndexSet()
colCurs = DataValueCursor.CreateFormatted(crossSource.Columns["AssessmentID"])
x = Document.Properties["udPreSelectedAssessments"]
#x = ""
if rowIndexSet.IsEmpty != True:
for row in crossSource.GetRows(rowIndexSet, colCurs):
#print colCurs.CurrentValue
if x == "":
x += colCurs.CurrentValue
else:
x += ", " + colCurs.CurrentValue
Document.Properties["udPreSelectedAssessments"] = x
彼らは彼らが望むすべてのアセスメントを追加した後(手動で編集することもできます)このリストでは、ユーザーはRefresh/Continueボタンを押すことができます。このボタンはudSelectedAssessmentsプロパティを変更することができます。情報リンクは、AssessmentID自体のリストを解析するストアドプロシージャとなる、キャッシュではなく自動的に更新するように設定されています。
strVals = Document.Properties["udPreSelectedAssessments"]
lst = ""
x = 0
y = 0
z = 0
for letter in strVals:
if y == 1:
if letter == " ":
lst = lst + strVals[x:z] + ", "
y = 0
elif letter == ",":
lst = lst + strVals[x:z] + ", "
y = 0
elif letter == "\n":
lst = lst + strVals[x:z] + ", "
y = 0
elif letter == "\r":
lst = lst + strVals[x:z] + ", "
y = 0
elif letter == "'":
lst = lst + strVals[x:z] + ", "
y = 0
elif letter == '"':
lst = lst + strVals[x:z] + ", "
y = 0
elif letter == '\t':
lst = lst + strVals[x:z] + ", "
y = 0
else:
if letter <> " " and letter <> "," and letter <> "\n" and letter <> "\r" and letter <> "'" and letter <> '"' and letter <> "\t":
#print letter
x = z
y = 1
z += 1
if y == 1:
lst = lst + strVals[x:z]
print lst
Document.Properties["udSelectedAssessments"] = lst
シンプルなT-SQL例:
declare @run varchar(max) = '
select * from DataTableName where AssessmentID in (' + @AssessmentList + ')'
execute (@run)
続行/ボタンを
リフレッシュ(あなたがストリップまたはデータベースに何かを渡す前にアポストロフィなどを追加することができ、主にように、私は事前特性を有するお勧めします)
EDIT:これは、データセットが大きいために使用する方法であり、サーバー全体をキャッシュしたり、ユーザーが分析のために過度の時間を待つことを避ける開く。データセットが小さいか、または正しいアセスメントを選択しやすくするために、キャッシング全体をキャッシュしているため、これらのいずれかを心配する必要がない場合は、次の調整をお勧めします。
更新ボタンの上方に設けられたコードにこのコードを追加します。
lst = lst.upper()
if len(lst) > 0:
Document.Properties["udSpecialCheck"] = 0
Document.Properties["udSelectedAssessments"] = lst
else:
Document.Properties["udSpecialCheck"] = 1
は、元のデータセットを使用しますが、次のコードによってデータ表現で可視化を制限:
Upper([Assessment]) in (${udSelectedAssessments) or ${udSpecialCheck} = 1
感謝をチェルシー!私はまだSpotfireのプログラミングに自信がないので、同僚とあなたのソリューションを試してみる必要があります。必要に応じて質問が返ってきます。 –