I am trying to add some filters (parameters) and it's not working... when I run the stored procedure, it returns the values I want however when I apply the filter I get the same results... any help would be most appreciated.
DAL:
public DataTable GetDebtOverview(string schoolCountry, string Centre, string salesRegion, string salesPerson, string agentCountry, string agentGroup)
{
SqlConnection sqlConnection = new SqlConnection(connStr1);
SqlCommand cmd = new SqlCommand();
cmd.Parameters.AddWithValue("@schoolcountry", schoolCountry);
cmd.Parameters.AddWithValue("@centre", Centre);
cmd.Parameters.AddWithValue("@salesregion", salesRegion);
cmd.Parameters.AddWithValue("@salesperson", salesPerson);
cmd.Parameters.AddWithValue("@agentcountry", agentCountry);
cmd.Parameters.AddWithValue("@agentgroup", agentGroup);
DataTable dt = new DataTable();
sqlConnection.Open();
SqlDataReader dr = cmd.ExecuteReader();
dt.Load(dr);
sqlConnection.Close();
return dt;
}
Service:
public List<DebtOverview> GetDebtOverviewList(string schoolCountry, string Centre, string salesRegion, string salesPerson, string agentCountry, string agentGroup)
{
List<DebtOverview> debtoverviews = new List<DebtOverview>();
sqlDal dal = new sqlDal();
foreach (DataRow item in dal.GetDebtOverview(schoolCountry, Centre, salesRegion, salesPerson, agentCountry, agentGroup).Rows)
{
DebtOverview debtoverview = new DebtOverview();
debtoverview.column_name = (string)item["column_name"];
debtoverview.column_data = (decimal)item["column_data"];
debtoverviews.Add(debtoverview);
}
return debtoverviews;
}
Model:
public class DebtOverview
{
public string column_name { get; set; }
public decimal column_data { get; set; }
}
Controller:
public ActionResult DebtOverviewRead(string schoolCountry, string Centre, string salesRegion, string salesPerson, string agentCountry, string agentGroup)
{
Services.sqlService ss = new Services.sqlService();
return Json(ss.GetDebtOverviewList(schoolCountry, Centre, salesRegion, salesPerson, agentCountry, agentGroup), JsonRequestBehavior.AllowGet);
}
Button:
$("#applyfilterFinance").click(function () {
var url = "/Finance/DebtOverviewRead";
var ftr1 = "'" + String($('#FinanceSchoolGeography').select2("val")).replace(/,/g, "','") + "'";
var ftr2 = "'" + String($('#FinanceCentre').select2("val")).replace(/,/g, "','") + "'";
var ftr3 = "'" + String($('#FinanceSalesRegion').select2("val")).replace(/,/g, "','") + "'";
var ftr4 = "'" + String($('#FinanceSalesPerson').select2("val")).replace(/,/g, "','") + "'";
var ftr5 = "'" + String($('#FinanceAgentCountry').select2("val")).replace(/,/g, "','") + "'";
var ftr6 = "'" + String($('#FinanceAgentGroup').select2("val")).replace(/,/g, "','") + "'";
var jsonObject = { schoolCountry: ftr1, Centre: ftr2, salesRegion: ftr3, salesPerson: ftr4, agentCountry: ftr5, agentGroup: ftr6 };
$.post(url, jsonObject, function (data) {
console.log(data);
});
});
Stored procedure:
CREATE proc [dbo].[DashBoards_DebtOverview]
(@agentcountry varchar(500) = '',
@SchoolCountry varchar(500) = '',
@SalesRegion varchar(500) = '',
@centre varchar(500) = '',
@agentGroup varchar(max) = '',
@salesperson varchar(500) = '')
AS
BEGIN
--local variables
declare @mdx as varchar(max)
declare @FieldList as varchar(1000)
declare @firstEntry varchar(50)
declare @mdxCol varchar(100)
--Agent Country
if rtrim(isnull(@agentcountry,''))=''
begin
set @fieldlist = '[Agent].[Agent Country].children'
end
else
begin
set @FieldList = @agentcountry
set @FieldList = REPLACE(@fieldlist,' ','')
set @FieldList = ltrim(RTRIM(@FieldList))
set @mdxCol = '[Agent].[Agent Country].[Agent Country].&['
if @fieldlist like '%,%'
begin
set @firstEntry = (SELECT SUBSTRING(@FieldList, 1, CHARINDEX(',', @FieldList)-1) AS FirstName)
set @FieldList = SUBSTRING(@FieldList,len(@firstentry)+1,len(@FieldList)+1-LEN(@firstentry))
set @FieldList = '{' + @mdxCol + @firstEntry + '' + REPLACE(@fieldlist,',','],'+@mdxCol +'') + ']}'
end
else
begin
set @fieldlist = '[Agent].[Agent Country].[Agent Country].&[' + rtrim(ltrim(@fieldlist)) + ']'
end
end
set @agentcountry = @fieldlist
-- School Geography
if rtrim(isnull(@SchoolCountry,''))=''
begin
set @fieldlist='[School Centre].[Country].children'
end
else
begin
set @FieldList = @SchoolCountry
set @FieldList=REPLACE(@fieldlist,' ','')
set @FieldList=ltrim(RTRIM(@FieldList))
set @mdxCol='[School Centre].[Country].&['
if @fieldlist like '%,%'
begin
set @firstEntry=(SELECT SUBSTRING(@FieldList, 1, CHARINDEX(',', @FieldList)-1) AS FirstName)
set @FieldList = SUBSTRING(@FieldList, len(@firstentry) + 1, len(@FieldList) + 1 - LEN(@firstentry))
set @FieldList = '{' + @mdxCol + @firstEntry + '' + REPLACE(@fieldlist, ',', '],' + @mdxCol +'') + ']}'
end
else
begin
set @fieldlist = '[School Centre].[Country].&[' + rtrim(ltrim(@fieldlist)) + ']'
end
end
set @SchoolCountry = @fieldlist
--Centre
if rtrim(isnull(@centre,''))=''
begin
set @fieldlist='[School Centre].[Centre].children'
end
else
begin
set @FieldList = @centre
set @FieldList=REPLACE(@fieldlist,' ',' ')
set @FieldList=ltrim(RTRIM(@FieldList))
set @mdxCol='[School Centre].[Centre].&['
if @fieldlist like '%,%'
begin
set @firstEntry=(SELECT SUBSTRING(@FieldList, 1, CHARINDEX(',', @FieldList)-1) AS FirstName)
set @FieldList=SUBSTRING(@FieldList,len(@firstentry)+1,len(@FieldList)+1-LEN(@firstentry))
set @FieldList='{' + @mdxCol + @firstEntry + '' + REPLACE(@fieldlist,',','],'+@mdxCol +'') + ']}'
end
else
begin
set @fieldlist='[School Centre].[Centre].[All].[' + rtrim(ltrim(@fieldlist)) + ']'
end
end
set @centre=@fieldlist
-- Sales Region
if rtrim(isnull(@SalesRegion,''))=''
begin
set @fieldlist='[Agent].[Sales Region].children'
end
else
begin
set @FieldList = @SalesRegion
set @FieldList=REPLACE(@fieldlist,' ','')
set @FieldList=ltrim(RTRIM(@FieldList))
set @mdxCol='[Agent].[Sales Region].&['
if @fieldlist like '%,%'
begin
set @firstEntry=(SELECT SUBSTRING(@FieldList, 1, CHARINDEX(',', @FieldList)-1) AS FirstName)
set @FieldList=SUBSTRING(@FieldList,len(@firstentry)+1,len(@FieldList)+1-LEN(@firstentry))
set @FieldList='{' + @mdxCol + @firstEntry + '' + REPLACE(@fieldlist,',','],'+@mdxCol +'') + ']}'
end
else
begin
set @fieldlist='[Agent].[Sales Region].&[' + rtrim(ltrim(@fieldlist)) + ']'
end
end
set @SalesRegion=@fieldlist
--Sales Person
if rtrim(isnull(@salesperson,''))=''
begin
set @fieldlist='[Agent].[Sales Person].children'
end
else
begin
set @FieldList = @salesperson
set @FieldList=REPLACE(@fieldlist,' ','')
set @FieldList=ltrim(RTRIM(@FieldList))
set @mdxCol='[Agent].[Sales Person].&['
if @fieldlist like '%,%'
begin
set @firstEntry=(SELECT SUBSTRING(@FieldList, 1, CHARINDEX(',', @FieldList)-1) AS FirstName)
set @FieldList=SUBSTRING(@FieldList,len(@firstentry)+1,len(@FieldList)+1-LEN(@firstentry))
set @FieldList='{' + @mdxCol + @firstEntry + '' + REPLACE(@fieldlist,',','],'+@mdxCol +'') + ']}'
end
else
begin
set @fieldlist='[Agent].[Sales Person].&[' + rtrim(ltrim(@fieldlist)) + ']'
end
end
set @salesperson=@fieldlist
--Agent Group
if rtrim(isnull(@agentgroup,''))=''
begin
set @fieldlist='[Agent].[Agent Group].children'
end
else
begin
set @FieldList = @agentgroup
set @FieldList=REPLACE(@fieldlist,' ','')
set @FieldList=ltrim(RTRIM(@FieldList))
set @mdxCol='[Agent].[Agent Group].&['
if @fieldlist like '%,%'
begin
set @firstEntry=(SELECT SUBSTRING(@FieldList, 1, CHARINDEX(',', @FieldList)-1) AS FirstName)
set @FieldList=SUBSTRING(@FieldList,len(@firstentry)+1,len(@FieldList)+1-LEN(@firstentry))
set @FieldList='{' + @mdxCol + @firstEntry + '' + REPLACE(@fieldlist,',','],'+@mdxCol +'') + ']}'
end
else
begin
set @fieldlist='[Agent].[Agent Group].&[' + rtrim(ltrim(@fieldlist)) + ']'
end
end
set @agentgroup=@fieldlist
set @mdx='
select {[Measures].[14 days] ,
[Measures].[30 days],
[Measures].[60 days],
[Measures].[90 days],
[Measures].[120 days],
[Measures].[over 120 days],
[Measures].[Not Yet Due],
[Measures].[Unallocated]} on columns
from [EC PTL AgedDebtors] where (' + @agentcountry + ',' + @SchoolCountry + ',' + @SalesRegion + ',' + @centre + ',' + @salesperson + ',' + @agentgroup + ')'
declare @InnerSQL as nvarchar(max)
declare @SQL as nvarchar(max)
set @InnerSQL='select * from openquery(EC_PTL_CUBE,''' + @mdx +''')'
create table #table1 (fourteen decimal(14), thirty decimal(14), sixty decimal(14), ninety decimal(14), onetwenty decimal(14), moreonetwenty decimal(14),
notyet decimal(14), unallocated decimal(14), duenow decimal(14));
create table #table2(column_name varchar(50), column_data decimal(14) )
set @SQL ='
insert into #table1
Select
convert(decimal(14),"[Measures].[14 days]") AS [14 days] ,
convert(decimal(14),"[Measures].[30 days]") AS [30 days] ,
convert(decimal(14),"[Measures].[60 days]") AS [60 days] ,
convert(decimal(14),"[Measures].[90 days]") AS [90 days] ,
convert(decimal(14),"[Measures].[120 days]") AS [120 days] ,
convert(decimal(14),"[Measures].[over 120 days]") AS [over 120 days] ,
convert(decimal(14),"[Measures].[Not Yet Due]") AS [Not Yet Due] ,
convert(decimal(14),"[Measures].[Unallocated]") AS [Unallocated] ,
convert(decimal(14),"[Measures].[14 days]")+
convert(decimal(14),"[Measures].[30 days]") +
convert(decimal(14),"[Measures].[60 days]") +
convert(decimal(14),"[Measures].[90 days]") +
convert(decimal(14),"[Measures].[120 days]")+
convert(decimal(14),"[Measures].[over 120 days]") AS [Due Now]
from (' + @InnerSQL + ') innerMDX'
exec sp_executesql @SQL;
insert into #table2
select 'Due Now' as Column_Name, duenow as column_Data from #table1;
insert into #table2
select '14 days' as Column_Name, fourteen as column_Data from #table1;
insert into #table2
select '30 days' as Column_Name, thirty as column_Data from #table1;
insert into #table2
select '60 days' as Column_Name, sixty as column_Data from #table1;
insert into #table2
select '90 days' as Column_Name, ninety as column_Data from #table1;
insert into #table2
select '120 days' as Column_Name, onetwenty as column_Data from #table1;
insert into #table2
select 'over 120 days' as Column_Name, moreonetwenty as column_Data from #table1;
insert into #table2
select 'Unallocated' as Column_Name, unallocated as column_Data from #table1;
select column_name, column_data from #table2;
drop table #table1;
drop table #table2;
end