Page 1 of 1

Help with StiFilterCondition.Containing

Posted: Tue May 22, 2007 11:43 am
by Martin Hart Turner
Hi:

Can someone help me with the syntax when creating a StiFilterCondition with the 'Containing' enumeration?

Thanks,
MartinH.

Help with StiFilterCondition.Containing

Posted: Tue May 22, 2007 1:34 pm
by Vital
You want create filter condition from code in runtime?

Thank you.

Help with StiFilterCondition.Containing

Posted: Wed May 23, 2007 2:04 am
by Martin Hart Turner
Vital wrote:You want create filter condition from code in runtime?

Thank you.
Yes, exactly.

Thanks,
MartinH.

Help with StiFilterCondition.Containing

Posted: Wed May 23, 2007 6:14 am
by Brendan

Code: Select all

using Stimulsoft.Report;
using Stimulsoft.Report.Components;

Code: Select all

StiReport report = new StiReport();

//Assume "myProducts" is a Table containing the columns [ProductID] and [ProductName]
report.Load("C:\\ProductList.mrt");
report.RegData("Products", myProducts);

StiDataBand myBand = report.GetComponentByName("DataBand1") as StiDataBand;
if(myBand != null)
{
	//Show Products where ProductName contains the word "Shoe"
	StiFilter myFilter = new StiFilter("ProductName", StiFilterCondition.Containing, "Shoe", StiFilterDataType.String);
	myBand.Filters.Add(myFilter);
}

rpt.Show();

Help with StiFilterCondition.Containing

Posted: Wed May 23, 2007 6:23 am
by Martin Hart Turner
Brendan:

Thanks for the valuable information.

Just one more question. Does StimulReports allow for grouped filter conditions?

By this I mean something like this: '(Code >= 1 and Code = 100 and Code <= 109)'

You can see there are 'and' conditions a well as an 'or' condition. Is this possible? If so how?

Thanks,
MartinH.

Help with StiFilterCondition.Containing

Posted: Wed May 23, 2007 6:49 am
by Brendan
Yes, in this case you could do one of the following:

1) Use a Between FilterCondition
2) Use 2 Filter Conditions. One for GreaterThanOrEqualTo and a second one for a LessThanOrEqualTo


1) Use a Between FilterCondition

Code: Select all

//Filter Code between the Values of 1 and 9
StiFilter myFilter = new StiFilter("Code", StiFilterCondition.Between, "1", "9", StiFilterDataType.Numeric);
myBand.Filters.Add(myFilter);

2) Using 2 Filter Conditions

Code: Select all

//Filter Codes with Values Greater than or equal to 100
StiFilter myFilter1 = new StiFilter("ProductID", StiFilterCondition.GreaterThanOrEqualTo, "100", StiFilterDataType.Numeric);
myBand.Filters.Add(myFilter1);

//Filter Codes with Values Less than or Equal to 109
StiFilter myFilter2 = new StiFilter("ProductID", StiFilterCondition.LessThanOrEqualTo, "109", StiFilterDataType.Numeric);
myBand.Filters.Add(myFilter2);

Help with StiFilterCondition.Containing

Posted: Wed May 23, 2007 6:52 am
by Edward
Please use expression instead of Value in the Field Is dialog Box.

Thank you.

Help with StiFilterCondition.Containing

Posted: Wed May 23, 2007 6:53 am
by Brendan
Oops Sorry,
I misread your question. In the example you gave you could use an Expression Filter to accomplish that task or you can use 2 filters and set the FilterMode Property of the DataBand

Code: Select all

myBand.FilterMode = StiFilterMode.Or;

Help with StiFilterCondition.Containing

Posted: Wed May 23, 2007 6:57 am
by Edward
Yes, it is the correct way.

An Expression you can find in the Designer. Default value is Value in the Field Is combobox.

Thank you.

Help with StiFilterCondition.Containing

Posted: Wed May 23, 2007 7:02 am
by Guest
You also may use the following code:

Code: Select all

StiFilter myFilter = new StiFilter("((Code >= 1) && (Code = 40) && (Code <= 109))");
                 
Thank you.