SSRS: End-user defined parameters set and cascading hierarchy
Cascading parameters is a good practice to navigate over report's data.
Cascading parameters set and hierarchy is defined by report developer at design time.
Below an approach is considered which allows end-user to achieve a result of parameters set and cascading hierarchy definition at run time.
https://social.msdn.microsoft.com/Forums/getfile/684984
Each logical parameter represents 2 visible ssrs parameters: field selection and value selection. Value selection is a multi-value parameter. Field selection does not contain already selected fields. Value selection contains only field values in rows filtered by previous selections (arbitrary parameters hierarchy).
Sample report demonstrates the approach on AdventureWorksDW2014.dbo.DimCustomer table.
Sql server stored procedure used to handle parameters, visual studio 2013 ssdt-bi screen shot and report definition xml are attached below:
https://social.msdn.microsoft.com/Forums/getfile/684976
ALTER PROCEDURE [ParamsDimCustomer] (
@p1 VARCHAR(max) = NULL
,@v1 VARCHAR(max) = NULL
,@p2 VARCHAR(max) = NULL
,@v2 VARCHAR(max) = NULL
,@p3 VARCHAR(max) = NULL
,@v3 VARCHAR(max) = NULL
,@p4 VARCHAR(max) = NULL
)
AS
IF (
@p1 IS NOT NULL
AND @v1 IS NULL
OR @p2 IS NOT NULL
AND @v2 IS NULL
OR @p3 IS NOT NULL
AND @v3 IS NULL
OR @p4 IS NOT NULL
)
BEGIN
DECLARE @sql NVARCHAR(max)
DECLARE @p VARCHAR(max) = COALESCE(@p4, @p3, @p2, @p1)
IF (
@p = 'Not set'
OR @p IS NULL
)
SET @sql = 'select ''Not set'' as FilterValue,''Not set'' as FilterValueCaption'
ELSE
BEGIN
SET @sql = '
SELECT isnull(cast([' + @p + '] as varchar(max)),''Blank'') as FilterValue, isnull(cast([' + @p + '] as varchar(max)),''Blank'') +'' (''+cast(count(1) as varchar(max))+'')'' as FilterValueCaption
FROM
[DimCustomer] where 1=1 ';
IF (@v1 != 'Not set')
SET @sql = @sql + '
and (cast([' + @p1 + '] as varchar(max)) in (''' + @v1 + ''') or [' + @p1 + '] is null and ''Blank'' in (''' + @v1 + '''))';
IF (@v2 != 'Not set')
SET @sql = @sql + '
and (cast([' + @p2 + '] as varchar(max)) in (''' + @v2 + ''') or [' + @p2 + '] is null and ''Blank'' in (''' + @v2 + '''))';
IF (@v3 != 'Not set')
SET @sql = @sql + '
and (cast([' + @p3 + '] as varchar(max)) in (''' + @v3 + ''') or [' + @p3 + '] is null and ''Blank'' in (''' + @v3 + '''))';
SET @sql = @sql + '
group by [' + @p + ']
order by [' + @p + ']
'
END;
PRINT @sql
EXECUTE sp_executesql @sql
END
ELSE
WITH params
AS (
SELECT *
FROM (
VALUES (
0
,'Not set'
,'Not set'
)
,(
1
,'Title'
,'Title'
)
,(
2
,'FirstName'
,'First Name'
)
,(
3
,'MiddleName'
,'Middle Name'
)
,(
4
,'LastName'
,'Last Name'
)
,(
5
,'NameStyle'
,'Name Style'
)
,(
6
,'BirthDate'
,'Birth Date'
)
,(
7
,'MaritalStatus'
,'Marital Status'
)
,(
8
,'Suffix'
,'Suffix'
)
,(
9
,'Gender'
,'Gender'
)
,(
10
,'YearlyIncome'
,'Yearly Income'
)
,(
11
,'TotalChildren'
,'Total Children'
)
,(
12
,'NumberChildrenAtHome'
,'Number Children At Home'
)
,(
13
,'EnglishEducation'
,'English Education'
)
,(
14
,'SpanishEducation'
,'Spanish Education'
)
,(
15
,'FrenchEducation'
,'French Education'
)
,(
16
,'EnglishOccupation'
,'English Occupation'
)
,(
17
,'SpanishOccupation'
,'Spanish Occupation'
)
,(
18
,'FrenchOccupation'
,'French Occupation'
)
,(
19
,'HouseOwnerFlag'
,'House Owner Flag'
)
,(
20
,'NumberCarsOwned'
,'Number Cars Owned'
)
,(
21
,'Phone'
,'Phone'
)
,(
22
,'DateFirstPurchase'
,'Date First Purchase'
)
,(
23
,'CommuteDistance'
,'Commute Distance'
)
) AS Q(FilterSort, FilterKey, FilterName)
)
SELECT *
FROM params
WHERE (
FilterKey != @p1
OR @p1 = 'Not set'
OR @p1 IS NULL
)
AND (
FilterKey != @p2
OR @p2 = 'Not set'
OR @p2 IS NULL
)
AND (
FilterKey != @p3
OR @p3 = 'Not set'
OR @p3 IS NULL
)
ORDER BY filtersort
<?xml version="1.0" encoding="utf-8"?>
<Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns:cl="http://schemas.microsoft.com/sqlserver/reporting/2010/01/componentdefinition" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition">
<AutoRefresh>0</AutoRefresh>
<DataSources>
<DataSource Name="AdventureWorksDW2014">
<ConnectionProperties>
<DataProvider>SQL</DataProvider>
<ConnectString>Data Source=.;Initial Catalog=AdventureWorksDW2014</ConnectString>
<IntegratedSecurity>true</IntegratedSecurity>
</ConnectionProperties>
<rd:SecurityType>Integrated</rd:SecurityType>
<rd:DataSourceID>aaf72225-d568-434a-8f7f-5136519ca076</rd:DataSourceID>
</DataSource>
</DataSources>
<DataSets>
<DataSet Name="MainDataSet">
<Query>
<DataSourceName>AdventureWorksDW2014</DataSourceName>
<QueryParameters>
<QueryParameter Name="@ReportParameter2">
<Value>=Parameters!ReportParameter2.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter1">
<Value>=Parameters!ReportParameter1.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter4">
<Value>=Parameters!ReportParameter4.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter3">
<Value>=Parameters!ReportParameter3.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter6">
<Value>=Parameters!ReportParameter6.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter5">
<Value>=Parameters!ReportParameter5.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter8">
<Value>=Parameters!ReportParameter8.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter7">
<Value>=Parameters!ReportParameter7.Value</Value>
</QueryParameter>
</QueryParameters>
<CommandText>DECLARE @sql NVARCHAR(max) = 'SELECT
A.*
FROM
[DimCustomer]
A'
DECLARE @sqlw NVARCHAR(max) =''
IF (@ReportParameter2 != 'Not set')
SET @sqlw = @sqlw + '
and ([' + @ReportParameter1 + '] in (''' + @ReportParameter2 + ''') or [' + @ReportParameter1 + '] is null and ''Blank'' in (''' + @ReportParameter2 + '''))';;
IF (@ReportParameter4 != 'Not set')
SET @sqlw = @sqlw + '
and ([' + @ReportParameter3 + '] in (''' + @ReportParameter4 + ''') or [' + @ReportParameter3 + '] is null and ''Blank'' in (''' + @ReportParameter4 + '''))';;
IF (@ReportParameter6 != 'Not set')
SET @sqlw = @sqlw + '
and ([' + @ReportParameter5 + '] in (''' + @ReportParameter6 + ''') or [' + @ReportParameter5 + '] is null and ''Blank'' in (''' + @ReportParameter6 + '''))';;
IF (@ReportParameter8 != 'Not set')
SET @sqlw = @sqlw + '
and ([' + @ReportParameter7 + '] in (''' + @ReportParameter8 + ''') or [' + @ReportParameter7 + '] is null and ''Blank'' in (''' + @ReportParameter8 + '''))';;
if @sqlw!='' set @sql = @sql + ' where 1=1 '+@sqlw
EXECUTE sp_executesql @sql</CommandText>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>
<Fields>
<Field Name="CustomerKey">
<DataField>CustomerKey</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="GeographyKey">
<DataField>GeographyKey</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="CustomerAlternateKey">
<DataField>CustomerAlternateKey</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="Title">
<DataField>Title</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FirstName">
<DataField>FirstName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="MiddleName">
<DataField>MiddleName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="LastName">
<DataField>LastName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="NameStyle">
<DataField>NameStyle</DataField>
<rd:TypeName>System.Boolean</rd:TypeName>
</Field>
<Field Name="BirthDate">
<DataField>BirthDate</DataField>
<rd:TypeName>System.DateTime</rd:TypeName>
</Field>
<Field Name="MaritalStatus">
<DataField>MaritalStatus</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="Suffix">
<DataField>Suffix</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="Gender">
<DataField>Gender</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="EmailAddress">
<DataField>EmailAddress</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="YearlyIncome">
<DataField>YearlyIncome</DataField>
<rd:TypeName>System.Decimal</rd:TypeName>
</Field>
<Field Name="TotalChildren">
<DataField>TotalChildren</DataField>
<rd:TypeName>System.Byte</rd:TypeName>
</Field>
<Field Name="NumberChildrenAtHome">
<DataField>NumberChildrenAtHome</DataField>
<rd:TypeName>System.Byte</rd:TypeName>
</Field>
<Field Name="EnglishEducation">
<DataField>EnglishEducation</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="SpanishEducation">
<DataField>SpanishEducation</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FrenchEducation">
<DataField>FrenchEducation</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="EnglishOccupation">
<DataField>EnglishOccupation</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="SpanishOccupation">
<DataField>SpanishOccupation</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FrenchOccupation">
<DataField>FrenchOccupation</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="HouseOwnerFlag">
<DataField>HouseOwnerFlag</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="NumberCarsOwned">
<DataField>NumberCarsOwned</DataField>
<rd:TypeName>System.Byte</rd:TypeName>
</Field>
<Field Name="AddressLine1">
<DataField>AddressLine1</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="AddressLine2">
<DataField>AddressLine2</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="Phone">
<DataField>Phone</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="DateFirstPurchase">
<DataField>DateFirstPurchase</DataField>
<rd:TypeName>System.DateTime</rd:TypeName>
</Field>
<Field Name="CommuteDistance">
<DataField>CommuteDistance</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
</DataSet>
<DataSet Name="DataSet1">
<Query>
<DataSourceName>AdventureWorksDW2014</DataSourceName>
<CommandText>[ParamsDimCustomer]</CommandText>
</Query>
<Fields>
<Field Name="FilterSort">
<DataField>FilterSort</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="FilterKey">
<DataField>FilterKey</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FilterName">
<DataField>FilterName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
</DataSet>
<DataSet Name="DataSet1Vals">
<Query>
<DataSourceName>AdventureWorksDW2014</DataSourceName>
<QueryParameters>
<QueryParameter Name="@ReportParameter1">
<Value>=Parameters!ReportParameter1.Value</Value>
</QueryParameter>
</QueryParameters>
<CommandText>exec [ParamsDimCustomer] @ReportParameter1</CommandText>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>
<Fields>
<Field Name="FilterValue">
<DataField>FilterValue</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FilterValueCaption">
<DataField>FilterValueCaption</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
</DataSet>
<DataSet Name="DataSet2">
<Query>
<DataSourceName>AdventureWorksDW2014</DataSourceName>
<QueryParameters>
<QueryParameter Name="@ReportParameter1">
<Value>=Parameters!ReportParameter1.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter2">
<Value>=Parameters!ReportParameter2.Value</Value>
</QueryParameter>
</QueryParameters>
<CommandText>exec [ParamsDimCustomer] @ReportParameter1,@ReportParameter2</CommandText>
</Query>
<Fields>
<Field Name="FilterSort">
<DataField>FilterSort</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="FilterKey">
<DataField>FilterKey</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FilterName">
<DataField>FilterName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
</DataSet>
<DataSet Name="DataSet2Vals">
<Query>
<DataSourceName>AdventureWorksDW2014</DataSourceName>
<QueryParameters>
<QueryParameter Name="@ReportParameter1">
<Value>=Parameters!ReportParameter1.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter2">
<Value>=Parameters!ReportParameter2.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter3">
<Value>=Parameters!ReportParameter3.Value</Value>
</QueryParameter>
</QueryParameters>
<CommandText>exec [ParamsDimCustomer] @ReportParameter1,@ReportParameter2,@ReportParameter3</CommandText>
</Query>
<Fields>
<Field Name="FilterValue">
<DataField>FilterValue</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FilterValueCaption">
<DataField>FilterValueCaption</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
</DataSet>
<DataSet Name="DataSet3">
<Query>
<DataSourceName>AdventureWorksDW2014</DataSourceName>
<QueryParameters>
<QueryParameter Name="@ReportParameter1">
<Value>=Parameters!ReportParameter1.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter2">
<Value>=Parameters!ReportParameter2.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter3">
<Value>=Parameters!ReportParameter3.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter4">
<Value>=Parameters!ReportParameter4.Value</Value>
</QueryParameter>
</QueryParameters>
<CommandText>exec[ParamsDimCustomer] @ReportParameter1,@ReportParameter2,@ReportParameter3,@ReportParameter4</CommandText>
</Query>
<Fields>
<Field Name="FilterSort">
<DataField>FilterSort</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="FilterKey">
<DataField>FilterKey</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FilterName">
<DataField>FilterName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
</DataSet>
<DataSet Name="DataSet4">
<Query>
<DataSourceName>AdventureWorksDW2014</DataSourceName>
<QueryParameters>
<QueryParameter Name="@ReportParameter1">
<Value>=Parameters!ReportParameter1.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter2">
<Value>=Parameters!ReportParameter2.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter3">
<Value>=Parameters!ReportParameter3.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter4">
<Value>=Parameters!ReportParameter4.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter5">
<Value>=Parameters!ReportParameter5.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter6">
<Value>=Parameters!ReportParameter6.Value</Value>
</QueryParameter>
</QueryParameters>
<CommandText>exec [ParamsDimCustomer] @ReportParameter1,@ReportParameter2,@ReportParameter3,@ReportParameter4,@ReportParameter5,@ReportParameter6</CommandText>
</Query>
<Fields>
<Field Name="FilterSort">
<DataField>FilterSort</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="FilterKey">
<DataField>FilterKey</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FilterName">
<DataField>FilterName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
</DataSet>
<DataSet Name="DataSet3Vals">
<Query>
<DataSourceName>AdventureWorksDW2014</DataSourceName>
<QueryParameters>
<QueryParameter Name="@ReportParameter1">
<Value>=Parameters!ReportParameter1.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter2">
<Value>=Parameters!ReportParameter2.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter3">
<Value>=Parameters!ReportParameter3.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter4">
<Value>=Parameters!ReportParameter4.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter5">
<Value>=Parameters!ReportParameter5.Value</Value>
</QueryParameter>
</QueryParameters>
<CommandText>exec [ParamsDimCustomer] @ReportParameter1,@ReportParameter2,@ReportParameter3,@ReportParameter4,@ReportParameter5</CommandText>
</Query>
<Fields>
<Field Name="FilterValue">
<DataField>FilterValue</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FilterValueCaption">
<DataField>FilterValueCaption</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
</DataSet>
<DataSet Name="DataSet4Vals">
<Query>
<DataSourceName>AdventureWorksDW2014</DataSourceName>
<QueryParameters>
<QueryParameter Name="@ReportParameter1">
<Value>=Parameters!ReportParameter1.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter2">
<Value>=Parameters!ReportParameter2.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter3">
<Value>=Parameters!ReportParameter3.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter4">
<Value>=Parameters!ReportParameter4.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter5">
<Value>=Parameters!ReportParameter5.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter6">
<Value>=Parameters!ReportParameter6.Value</Value>
</QueryParameter>
<QueryParameter Name="@ReportParameter7">
<Value>=Parameters!ReportParameter7.Value</Value>
</QueryParameter>
</QueryParameters>
<CommandText>exec [ParamsDimCustomer] @ReportParameter1,@ReportParameter2,@ReportParameter3,@ReportParameter4,@ReportParameter5,@ReportParameter6,@ReportParameter7</CommandText>
</Query>
<Fields>
<Field Name="FilterValue">
<DataField>FilterValue</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FilterValueCaption">
<DataField>FilterValueCaption</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
</DataSet>
</DataSets>
<ReportSections>
<ReportSection>
<Body>
<ReportItems>
<Tablix Name="table1">
<TablixBody>
<TablixColumns>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
<TablixColumn>
<Width>1in</Width>
</TablixColumn>
</TablixColumns>
<TablixRows>
<TablixRow>
<Height>0.21in</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Textbox Name="textbox2">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Title</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox2</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox3">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>First Name</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox3</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox4">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Middle Name</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox4</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox5">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Last Name</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox5</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox6">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Name Style</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox6</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox7">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Birth Date</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox7</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox8">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Marital Status</Value>
<Style>
<Format>MM/dd/YY</Format>
</Style>
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox8</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox9">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Suffix</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox9</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox10">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Gender</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox10</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox11">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Email Address</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox11</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox12">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Yearly Income</Value>
<Style />
</TextRun>
</TextRuns>
<Style>
<TextAlign>Right</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox12</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox13">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Total Children</Value>
<Style />
</TextRun>
</TextRuns>
<Style>
<TextAlign>Right</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox13</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox14">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Number Children At Home</Value>
<Style />
</TextRun>
</TextRuns>
<Style>
<TextAlign>Right</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox14</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox15">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>English Education</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox15</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox16">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Spanish Education</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox16</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox17">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>French Education</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox17</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox18">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>English Occupation</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox18</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox19">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Spanish Occupation</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox19</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox20">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>French Occupation</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox20</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox21">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>House Owner Flag</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox21</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox22">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Number Cars Owned</Value>
<Style />
</TextRun>
</TextRuns>
<Style>
<TextAlign>Right</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox22</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox23">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Address Line1</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox23</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox24">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Address Line2</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox24</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox25">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Phone</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox25</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox26">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Date First Purchase</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox26</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox27">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Commute Distance</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox27</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
<TablixRow>
<Height>0.21in</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Textbox Name="Title">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!Title.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>Title</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="FirstName">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!FirstName.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>FirstName</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="MiddleName">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!MiddleName.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>MiddleName</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="LastName">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!LastName.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>LastName</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="NameStyle">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!NameStyle.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>NameStyle</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="BirthDate">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Format(Fields!BirthDate.Value,"MM/dd/yyyy")</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>BirthDate</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="MaritalStatus">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!MaritalStatus.Value</Value>
<Style>
<Format>MM/dd/YY</Format>
</Style>
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>MaritalStatus</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Suffix">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!Suffix.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>Suffix</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Gender">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!Gender.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>Gender</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="EmailAddress">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!EmailAddress.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>EmailAddress</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="YearlyIncome">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!YearlyIncome.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>YearlyIncome</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="TotalChildren">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!TotalChildren.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>TotalChildren</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="NumberChildrenAtHome">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!NumberChildrenAtHome.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>NumberChildrenAtHome</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="EnglishEducation">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!EnglishEducation.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>EnglishEducation</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="SpanishEducation">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!SpanishEducation.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>SpanishEducation</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="FrenchEducation">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!FrenchEducation.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>FrenchEducation</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="EnglishOccupation">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!EnglishOccupation.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>EnglishOccupation</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="SpanishOccupation">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!SpanishOccupation.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>SpanishOccupation</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="FrenchOccupation">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!FrenchOccupation.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>FrenchOccupation</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="HouseOwnerFlag">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!HouseOwnerFlag.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>HouseOwnerFlag</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="NumberCarsOwned">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!NumberCarsOwned.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>NumberCarsOwned</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="AddressLine1">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!AddressLine1.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>AddressLine1</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="AddressLine2">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!AddressLine2.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>AddressLine2</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Phone">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!Phone.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>Phone</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="DateFirstPurchase">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Format(Fields!DateFirstPurchase.Value,"MM/dd/yyyy")</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>DateFirstPurchase</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="CommuteDistance">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!CommuteDistance.Value</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>CommuteDistance</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
</TablixRows>
</TablixBody>
<TablixColumnHierarchy>
<TablixMembers>
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
</TablixMembers>
</TablixColumnHierarchy>
<TablixRowHierarchy>
<TablixMembers>
<TablixMember>
<KeepWithGroup>After</KeepWithGroup>
<RepeatOnNewPage>true</RepeatOnNewPage>
<KeepTogether>true</KeepTogether>
</TablixMember>
<TablixMember>
<Group Name="table1_Details_Group">
<DataElementName>Detail</DataElementName>
</Group>
<TablixMembers>
<TablixMember />
</TablixMembers>
<DataElementName>Detail_Collection</DataElementName>
<DataElementOutput>Output</DataElementOutput>
<KeepTogether>true</KeepTogether>
</TablixMember>
</TablixMembers>
</TablixRowHierarchy>
<DataSetName>MainDataSet</DataSetName>
<Top>0.42628in</Top>
<Height>0.42in</Height>
<Width>26in</Width>
<Style />
</Tablix>
<Textbox Name="CustomerKey">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>="Rows count: " + CStr(CountRows("MainDataSet"))</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>CustomerKey</rd:DefaultName>
<Top>0.0762cm</Top>
<Left>0.15557cm</Left>
<Height>0.6cm</Height>
<Width>7.07729cm</Width>
<ZIndex>1</ZIndex>
<Style>
<Border>
<Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</ReportItems>
<Height>21.49554mm</Height>
<Style>
<Border>
<Style>None</Style>
</Border>
</Style>
</Body>
<Width>660.4mm</Width>
<Page>
<PageFooter>
<Height>0.26458mm</Height>
<PrintOnFirstPage>true</PrintOnFirstPage>
<PrintOnLastPage>true</PrintOnLastPage>
<Style>
<Border>
<Style>None</Style>
</Border>
</Style>
</PageFooter>
<PageHeight>29.7cm</PageHeight>
<PageWidth>50cm</PageWidth>
<InteractiveHeight>50mm</InteractiveHeight>
<InteractiveWidth>50mm</InteractiveWidth>
<LeftMargin>0.5cm</LeftMargin>
<RightMargin>0.5cm</RightMargin>
<TopMargin>0.5cm</TopMargin>
<BottomMargin>0.5cm</BottomMargin>
<ColumnSpacing>0.13cm</ColumnSpacing>
<Style />
</Page>
</ReportSection>
</ReportSections>
<ReportParameters>
<ReportParameter Name="ReportParameter1">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>Not set</Value>
</Values>
</DefaultValue>
<Prompt>Parameter 1 field</Prompt>
<ValidValues>
<DataSetReference>
<DataSetName>DataSet1</DataSetName>
<ValueField>FilterKey</ValueField>
<LabelField>FilterName</LabelField>
</DataSetReference>
</ValidValues>
</ReportParameter>
<ReportParameter Name="ReportParameter2m">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>=iif(Parameters!ReportParameter1.Value="Not set","Not set",Nothing)</Value>
</Values>
</DefaultValue>
<Prompt>Parameter 1 value</Prompt>
<ValidValues>
<DataSetReference>
<DataSetName>DataSet1Vals</DataSetName>
<ValueField>FilterValue</ValueField>
<LabelField>FilterValueCaption</LabelField>
</DataSetReference>
</ValidValues>
<MultiValue>true</MultiValue>
</ReportParameter>
<ReportParameter Name="ReportParameter2">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>=Join(Parameters!ReportParameter2m.Value,"','")</Value>
</Values>
</DefaultValue>
<Prompt>ReportParameter2</Prompt>
<Hidden>true</Hidden>
<ValidValues>
<ParameterValues>
<ParameterValue>
<Value>=Join(Parameters!ReportParameter2m.Value,"','")</Value>
<Label>=Join(Parameters!ReportParameter2m.Value,"','")</Label>
</ParameterValue>
</ParameterValues>
</ValidValues>
</ReportParameter>
<ReportParameter Name="ReportParameter3">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>=iif(Parameters!ReportParameter2.Count=1,"Not set","Not set")</Value>
</Values>
</DefaultValue>
<Prompt>Parameter 2 field</Prompt>
<ValidValues>
<DataSetReference>
<DataSetName>DataSet2</DataSetName>
<ValueField>FilterKey</ValueField>
<LabelField>FilterName</LabelField>
</DataSetReference>
</ValidValues>
</ReportParameter>
<ReportParameter Name="ReportParameter4m">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>=iif(Parameters!ReportParameter3.Value="Not set","Not set",Nothing)</Value>
</Values>
</DefaultValue>
<Prompt>Parameter 2 value</Prompt>
<ValidValues>
<DataSetReference>
<DataSetName>DataSet2Vals</DataSetName>
<ValueField>FilterValue</ValueField>
<LabelField>FilterValueCaption</LabelField>
</DataSetReference>
</ValidValues>
<MultiValue>true</MultiValue>
</ReportParameter>
<ReportParameter Name="ReportParameter4">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>=Join(Parameters!ReportParameter4m.Value,"','")</Value>
</Values>
</DefaultValue>
<Prompt>ReportParameter4</Prompt>
<Hidden>true</Hidden>
<ValidValues>
<ParameterValues>
<ParameterValue>
<Value>=Join(Parameters!ReportParameter4m.Value,"','")</Value>
<Label>=Join(Parameters!ReportParameter4m.Value,"','")</Label>
</ParameterValue>
</ParameterValues>
</ValidValues>
</ReportParameter>
<ReportParameter Name="ReportParameter5">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>=iif(Parameters!ReportParameter4.Count=1,"Not set","Not set")</Value>
</Values>
</DefaultValue>
<Prompt>Parameter 3 field</Prompt>
<ValidValues>
<DataSetReference>
<DataSetName>DataSet3</DataSetName>
<ValueField>FilterKey</ValueField>
<LabelField>FilterName</LabelField>
</DataSetReference>
</ValidValues>
</ReportParameter>
<ReportParameter Name="ReportParameter6m">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>=iif(Parameters!ReportParameter5.Value="Not set","Not set",Nothing)</Value>
</Values>
</DefaultValue>
<Prompt>Parameter 3 value</Prompt>
<ValidValues>
<DataSetReference>
<DataSetName>DataSet3Vals</DataSetName>
<ValueField>FilterValue</ValueField>
<LabelField>FilterValueCaption</LabelField>
</DataSetReference>
</ValidValues>
<MultiValue>true</MultiValue>
</ReportParameter>
<ReportParameter Name="ReportParameter6">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>=Join(Parameters!ReportParameter6m.Value,"','")</Value>
</Values>
</DefaultValue>
<Prompt>ReportParameter6</Prompt>
<Hidden>true</Hidden>
<ValidValues>
<ParameterValues>
<ParameterValue>
<Value>=Join(Parameters!ReportParameter6m.Value,"','")</Value>
<Label>=Join(Parameters!ReportParameter6m.Value,"','")</Label>
</ParameterValue>
</ParameterValues>
</ValidValues>
</ReportParameter>
<ReportParameter Name="ReportParameter7">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>=iif(Parameters!ReportParameter6.Count=1,"Not set","Not set")</Value>
</Values>
</DefaultValue>
<Prompt>Parameter 4 field</Prompt>
<ValidValues>
<DataSetReference>
<DataSetName>DataSet4</DataSetName>
<ValueField>FilterKey</ValueField>
<LabelField>FilterName</LabelField>
</DataSetReference>
</ValidValues>
</ReportParameter>
<ReportParameter Name="ReportParameter8m">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>=iif(Parameters!ReportParameter7.Value="Not set","Not set",Nothing)</Value>
</Values>
</DefaultValue>
<Prompt>Parameter 1 value</Prompt>
<ValidValues>
<DataSetReference>
<DataSetName>DataSet4Vals</DataSetName>
<ValueField>FilterValue</ValueField>
<LabelField>FilterValueCaption</LabelField>
</DataSetReference>
</ValidValues>
<MultiValue>true</MultiValue>
</ReportParameter>
<ReportParameter Name="ReportParameter8">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>=Join(Parameters!ReportParameter8m.Value,"','")</Value>
</Values>
</DefaultValue>
<Prompt>ReportParameter8</Prompt>
<Hidden>true</Hidden>
<ValidValues>
<ParameterValues>
<ParameterValue>
<Value>=Join(Parameters!ReportParameter8m.Value,"','")</Value>
<Label>=Join(Parameters!ReportParameter8m.Value,"','")</Label>
</ParameterValue>
</ParameterValues>
</ValidValues>
<UsedInQuery>True</UsedInQuery>
</ReportParameter>
</ReportParameters>
<Code>Function JoinP(varArray as array, dl as string) as String
Dim RetVal As String
RetVal = ""
For Each item As String In varArray
Dim uniquetest
uniquetest = replace(RetVal, item, "")
If ((uniquetest = RetVal) And (CStr(item) <> "")) Then
RetVal = RetVal + item + dl
End If
Next
RetVal = RetVal + dl + dl
Retval = Replace(Retval, dl + dl + dl, "")
Retval = Replace(Retval, dl + dl, "")
Return RetVal
End Function
Function CreateImage(ByVal sImageText As String, ByVal FontType As String, ByVal FontSize As Integer, ByVal MyWidth As Integer, ByVal MyHeight As Integer) As System.Drawing.Bitmap
'Create an image from scratch
Dim bmpImage As New Drawing.Bitmap(1, 1)
Dim iWidth As Integer = 0
Dim iHeight As Integer = 0
'Create the Font object for the image text drawing.
Dim MyFont As New Drawing.Font(FontType, FontSize, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point)
'Create a graphics object to measure the text's width and height.
Dim MyGraphics As Drawing.Graphics = Drawing.Graphics.FromImage(bmpImage)
'This is where the bitmap size is determined.
iWidth = MyGraphics.MeasureString(sImageText, MyFont).Width
iHeight = MyGraphics.MeasureString(sImageText, MyFont).Height
'// Create the bmpImage again with the correct size for the text and font.
bmpImage = New Drawing.Bitmap(bmpImage, New Drawing.Size(MyWidth, MyHeight))
'// Add the colors to the new bitmap.
MyGraphics = Drawing.Graphics.FromImage(bmpImage)
MyGraphics.Clear(Drawing.Color.White)
MyGraphics.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
MyGraphics.DrawString(sImageText, MyFont, New Drawing.SolidBrush(Drawing.Color.Black), New Drawing.RectangleF(0, 0, MyWidth, MyHeight))
MyGraphics.Flush()
Return bmpImage
End Function
Function RotateImage(ByVal bm_in As System.Drawing.Bitmap, ByVal RotationAngle As Integer) As System.Drawing.Bitmap
Dim wid As Single = bm_in.Width
Dim hgt As Single = bm_in.Height
Dim corners As System.Drawing.Point() = { _
New System.Drawing.Point(0, 0), _
New System.Drawing.Point(wid, 0), _
New System.Drawing.Point(0, hgt), _
New System.Drawing.Point(wid, hgt)}
' Translate to center the bounding box at the origin.
Dim cx As Single = wid / 2
Dim cy As Single = hgt / 2
Dim i As Long
For i = 0 To 3
corners(i).X -= cx
corners(i).Y -= cy
Next i
' Rotate.
Dim theta As Single = Single.Parse(RotationAngle) * System.Math.PI _
/ 180.0
Dim sin_theta As Single = System.Math.Sin(theta)
Dim cos_theta As Single = System.Math.Cos(theta)
Dim X As Single
Dim Y As Single
For i = 0 To 3
X = corners(i).X
Y = corners(i).Y
corners(i).X = X * cos_theta + Y * sin_theta
corners(i).Y = -X * sin_theta + Y * cos_theta
Next i
' Translate so X >= 0 and Y >=0 for all corners.
Dim xmin As Single = corners(0).X
Dim ymin As Single = corners(0).Y
For i = 1 To 3
If xmin > corners(i).X Then xmin = corners(i).X
If ymin > corners(i).Y Then ymin = corners(i).Y
Next i
For i = 0 To 3
corners(i).X -= xmin
corners(i).Y -= ymin
Next i
' Create an output Bitmap and Graphics object.
Dim bm_out As New System.Drawing.Bitmap(CInt(-2 * xmin), CInt(-2 * _
ymin))
Dim gr_out As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(bm_out)
' Drop the last corner lest we confuse DrawImage,
' which expects an array of three corners.
ReDim Preserve corners(2)
' Draw the result onto the output Bitmap.
gr_out.Clear(Drawing.Color.White)
gr_out.DrawImage(bm_in, corners)
gr_out.Flush()
' Display the result.
Return bm_out
End Function
Function StreamImage(ByVal bmpImage As System.Drawing.Bitmap)
Dim stream As IO.MemoryStream = New IO.MemoryStream
Dim bitmapBytes As Byte()
'Create bitmap stream
bmpImage.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg)
bitmapBytes = stream.ToArray
stream.Close()
bmpImage.Dispose()
Return bitmapBytes
End Function
Function Create_RotateAndStreamImage(ByVal sImageText As String, ByVal FontType As String, ByVal FontSize As Integer, ByVal RotationAngle As Integer, ByVal MyWidth As Integer, ByVal MyHeight As Integer)
'Create a blank image
Dim bmpImage As New Drawing.Bitmap(1, 1)
'Create an image from scratch
bmpImage = CreateImage(sImageText, FontType, FontSize, MyWidth, MyHeight)
'Rotate Image at desired Angle
bmpImage = RotateImage(bmpImage, RotationAngle)
Return StreamImage(bmpImage)
Return bmpImage
End Function
Private CurrGroupBy As String = String.Empty
Private ConcatVal As String = String.Empty
Public Function AggConcat(GroupBy As String, ElementVal As String) As String
If CurrGroupBy = GroupBy Then
ConcatVal = ConcatVal & "" & ElementVal
Else
CurrGroupBy = GroupBy
ConcatVal = ElementVal
End If
Return ConcatVal
End Function
Private CurrGroupBy2 As String = String.Empty
Private ConcatVal2 As String = String.Empty
Public Function AggConcat2(GroupBy As String, ElementVal As String) As String
If CurrGroupBy2 = GroupBy Then
ConcatVal2 = ConcatVal2 & "" & ElementVal
Else
CurrGroupBy2 = GroupBy
ConcatVal2 = ElementVal
End If
Return ConcatVal2
End Function
Private CurrGroupBy3 As String = String.Empty
Private ConcatVal3 As String = String.Empty
Public Function AggConcat3(GroupBy As String, ElementVal As String) As String
If CurrGroupBy3 = GroupBy Then
ConcatVal3 = ConcatVal3 & "" & ElementVal
Else
CurrGroupBy3 = GroupBy
ConcatVal3 = ElementVal
End If
Return ConcatVal3
End Function
</Code>
<Language>en-AU</Language>
<CodeModules>
<CodeModule>System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</CodeModule>
</CodeModules>
<Variables>
<Variable Name="cn">
<Value>1</Value>
<Writable>true</Writable>
</Variable>
</Variables>
<rd:ReportUnitType>Cm</rd:ReportUnitType>
<rd:ReportServerUrl>http://t005/ProjectBICenter<;/rd:ReportServerUrl>
<rd:ReportID>613ab07d-fd3f-45b2-87a1-6bc7ebaf221e</rd:ReportID>
</Report>