Jump to content
We've recently updated our Privacy Statement, available here. ×

How to pass multiple values to one stored procedure parameter in Soptfire

Sanandh C k

Recommended Posts

Hi Team,

I have created one dashboard by using stored procedure . I have one String type parameter in that procedure. But I am unable to pass multiple selected value from list box property to stored procedure . Please suggest a solution for this. The storedprocedure is taking only one value at time .

Link to comment
Share on other sites

  • 1 year later...

Here is the answer.

Steps for implementing the solution.

1. Add list box filter to the text area

2. Create a document property for storing the values

3. Write Iron python script for updating selected values to document property and refresh the data table

4. Add a button to executing the script

from Spotfire.Dxp.Application.Filters import *

from Spotfire.Dxp.Data import *

from Spotfire.Dxp.Application import Filters as filters

from Spotfire.Dxp.Application.Filters import ListBoxFilter

from Spotfire.Dxp.Data import IndexSet

from Spotfire.Dxp.Data import DataValueCursor

import Spotfire.Dxp.Data.DataTable

from Spotfire.Dxp.Data import *

from Spotfire.Dxp.Data import DataValueCursor


###Created By Sanandh @17 Jul 2019


######For Take getting parameter ######


tableName = 'MyTable' ###### Data table name

myTable = Document.Data.Tables[tableName]



###### Assign the corresponding filter schema name


rowCount = myTable.RowCount ###### Checking row count


#print rowCount

#print "++++++++++++ ++++++++++++++++++++++ ++++++++++++"

Param = ''

if myTable.RowCount == filt.FilteredRows.Count:

param = ''

else :


rows = Document.ActiveFilteringSelectionReference.GetSelection(Speciality).AsIndexSet()


for row in rows:

for column in Speciality.Columns:

if (column.Name == "MyColumn"): ## Column Name

Values= (column.RowValues.GetFormattedValue(row))

#print Values

Param = Param + Values + "||"


Document.Properties['MyDoc']=Param /// Assign value to doc proprty

print Document.Properties["MyDoc"]


if table.IsRefreshable and table.NeedsRefresh: /// Refresh Table


Link to comment
Share on other sites

Function for spli stringsSET ANSI_NULLS ON



GOALTER FUNCTION [datalayer].[Fn_Split] (  

      @InputString                  VARCHAR(8000),  

      @Delimiter                    VARCHAR(50)  




      Item                          VARCHAR(8000)  





      IF @Delimiter = ' '  


            SET @Delimiter = '||'  

            SET @InputString = REPLACE(@InputString, ' ', @Delimiter)  



      IF (@Delimiter IS NULL OR @Delimiter = '')  

            SET @Delimiter = '||'  


--INSERT INTO @Items VALUES (@Delimiter) -- Diagnostic  

--INSERT INTO @Items VALUES (@InputString) -- Diagnostic  


      DECLARE @Item                 VARCHAR(8000)  

      DECLARE @ItemList       VARCHAR(8000)  

      DECLARE @DelimIndex     INT  


      SET @ItemList = @InputString  


      SET @DelimIndex = CHARINDEX(@Delimiter, @ItemList, 0)  

      WHILE (@DelimIndex != 0)  


            SET @Item = SUBSTRING(@ItemList, 0, @DelimIndex)  

            INSERT INTO @Items VALUES (@Item)  


            -- Set @ItemList = @ItemList minus one less item  

            SET @ItemList = SUBSTRING(@ItemList, @DelimIndex+2, LEN(@ItemList)-@DelimIndex)   -- changed to 2 beacuse deliminator is 2 sanandh  

            SET @DelimIndex = CHARINDEX(@Delimiter, @ItemList, 0)  

      END -- End WHILE  


      IF @Item IS NOT NULL -- At least one delimiter was encountered in @InputString  


            SET @Item = @ItemList  

            INSERT INTO @Items VALUES (@Item)  



      -- No delimiters were encountered in @InputString, so just return @InputString  

      ELSE INSERT INTO @Items VALUES (@InputString)  




END -- End Function  

Link to comment
Share on other sites

This is the latest code


from Spotfire.Dxp.Application.Filters import ListBoxFilter

#get a reference to a listbox 

#to get the active filtering reference:
#filt = Document.FilteringSchemes[Document.ActiveFilteringSelectionReference][myDataTable][MyDataTable.Columns["symbol"]].As[ListBoxFilter]()

#loop selected values

for value in filt.SelectedValues:
print value
SelectedValues= SelectedValues+value+','
if filt.IncludeEmpty==True:

if filt.IncludeAllValues == True:
if filt.IncludeAllValues == False and len(SelectedValues)==0:
SelectedValues="No Values selected"




Link to comment
Share on other sites

  • 11 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...