Friday, March 23, 2012
question on synchronization for Intel Developer Services article
Services, Intel's site for sw developers. The article is on writing
applications for use in occasionally connected environments. Intel really
thinks that asynchronous, OC apps make more sense for a slew of mobile
applications.
Here is my question (I'm sorry if it's naive... I'm not a developer): As I
understand it, it's only in SQL for Windows CE that the database can live
locally on the client device, synchronizing to a back end when a connection
becomes available. So building OC solutions across multiple devices is
difficult, because there's little support for the same functionality on PCs
laptops. Is this correct? What are are some tips for developers looking to
build apps that work asynchronously on laptops?
Thanks very much for any help you can provide. I'm looking for comments I
might quote from in my article, but if you prefer not to be quoted, that's
fine, too. I'm also looking just to get smart on this.
Geoff Koch (gkoch AT stanfordalumni DOT org)
Science/Tech Writer
Lansing, MichiganIf you are talking about replication then any of the SQL Server editions can
do some form of replication, not just CE. What edition will run on your
mobile device depends on what OS it is running. ADO.net has a lot of
features based around offline datasets and make it relatively easy to build
applications that can work off line and update later. I would suggest you
have a look at www.microsoft.com/sql and browse around in the different
areas that may be of interest to you.
Andrew J. Kelly SQL MVP
"Geoff" <Geoff@.discussions.microsoft.com> wrote in message
news:9E776F8F-AA13-432F-B40C-78C3A2AA5DD1@.microsoft.com...
> I'm a freelance tech writer working on an article for Intel Developer
> Services, Intel's site for sw developers. The article is on writing
> applications for use in occasionally connected environments. Intel really
> thinks that asynchronous, OC apps make more sense for a slew of mobile
> applications.
> Here is my question (I'm sorry if it's naive... I'm not a developer): As
> I
> understand it, it's only in SQL for Windows CE that the database can live
> locally on the client device, synchronizing to a back end when a
> connection
> becomes available. So building OC solutions across multiple devices is
> difficult, because there's little support for the same functionality on
> PCs
> laptops. Is this correct? What are are some tips for developers looking to
> build apps that work asynchronously on laptops?
> Thanks very much for any help you can provide. I'm looking for comments I
> might quote from in my article, but if you prefer not to be quoted, that's
> fine, too. I'm also looking just to get smart on this.
> --
> Geoff Koch (gkoch AT stanfordalumni DOT org)
> Science/Tech Writer
> Lansing, Michigansql
Wednesday, March 21, 2012
Question on SP_MakeWebTask
particular query returns no records, the string that gets written from
the:
<%begindetail%>
<%insert_data_here%>
<<%enddetail%>
part of the template file is: "The specified statement did not generate
any data"
Is there a way to substitute this string with a different one?
Thanks,
JoeHi
Have you tried using a UNION that returns an default record if your original
query returned nothing?
John
"joef" wrote:
> I'm using SP_MakeWebTask it's working OK. The problem is that if a
> particular query returns no records, the string that gets written from
> the:
> <%begindetail%>
> <%insert_data_here%>
> <<%enddetail%>
> part of the template file is: "The specified statement did not generate
> any data"
> Is there a way to substitute this string with a different one?
> Thanks,
> Joe
>sql
Friday, March 9, 2012
Question on merge replication
server 2000 database. There is a second sql server on a different
domain, connected via vpn. Database on main domain sql server is
replicated / merge / push published to the 2nd domain sql server
The goal is to be available 24/7 for 100% so the plan is when the main
server becomes unavailable users are rerouted and the 2nd server takes
over. When the 1st becomes available again the data on the 1st server
should be updated from the 2nd and is supposed to resum
We are wondering now if Merge replication is is the way to go AND how
to set it up.
TIA, Martin
Merge replication can be use for this the caveats are
1) latency. Latency can be 1 minute or longer depending on the volume of
your transactions. This means if your publisher goes belly up, and your
standby (subscriber) server comes on line, it may not have all the records
which your publisher has
2) replication will add a guid column to your tables which may break the
application which is using these tables
Bi-directional replication is ideal for this as
1) latency is typically much less
2) you don't have to add a guid column
3) bi-directional replication works best when the transactions originate at
one node at a time
To set up merge replication go to Tools, point to replication, and click
create and manage publications and follow the prompts
To set up bi-directional transactional replication you are best to get the
updated BOL, and search on Implementing Nonpartitioned, Bidirectional,
Transactional Replication.
Hilary Cotter
Looking for a book on SQL Server replication?
http://www.nwsu.com/0974973602.html
"Martin Heuckeroth" <nick@.nospam.invalid> wrote in message
news:4thvi0d35qmir83nnri6ud7tpcclqu6b79@.4ax.com...
>
> We are working on an application that is running data on a local sql
> server 2000 database. There is a second sql server on a different
> domain, connected via vpn. Database on main domain sql server is
> replicated / merge / push published to the 2nd domain sql server
> The goal is to be available 24/7 for 100% so the plan is when the main
> server becomes unavailable users are rerouted and the 2nd server takes
> over. When the 1st becomes available again the data on the 1st server
> should be updated from the 2nd and is supposed to resum
> We are wondering now if Merge replication is is the way to go AND how
> to set it up.
> TIA, Martin
>
Question on how to display data in this unique situation.....
Hi guys,
Man I do come up with strange scenarios, but that is the joy of working in software field right ? ;-)
First off, thanks to anyone taking their time to read this, and Ihope this post paints a clearer picture better than my previous posts.
I have an old stored procedure (which I didn't create) that produces a dataset of the following:-
((All names and values had been changed to protect confidentiality))
region agent_type mailpackage1 mailpackage2 mailpackage3
New York Agenttype1 2000 2300 0
New York Agenttype2 0 0 5
New York Agenttype3 150 2 4000
Central Agenttype2 1234 5678 9
Central Agenttype4 435 1 0
MidWest Agenttype1 555 0 0
West Agenttype1 1 45 0
West Agenttype2 0 2 3
A little bit of explanation:-
Each region can have any type of agents, specified by the number to distinguish different agent types. these agent types mail specific packages to their customers depending on the situation and what the customers asked for. the numbers in each mail package indicate the total that had been sent out by a particular type of an agent. So in this case we are not dealing wtih how many agents are there, just how many packages had been sent out by a specific type of an agent in a region.
Previously the report was produced like you would see in the above dataset. However the client would want it the other way around. Though I didn't show it here, there are plenty of other packages but I am picking three for clarity sake.
So the "new" Report would have to look something like this.
Region: New York
AgentType1 AgentType2 AgentType3 AgentType4
Package1 2000 0 150 0
Package2 2300 0 2 0
Package3 0 5 4000 0
break page
Region: Central
AgentType1 AgentType2 AgentType3 AgentType4
Package1 0 1234 0 435
Package2 0 5678 0 1
Package3 0 9 0 0
- break Page -- and so on
I had created a table in the RS that looked like the above with expressions written into the each cell that holds a value. The expression is
=IIF(Fields!agent_type = "AgentType1", mailpackage1.Value, Cint(0)) in the first row, first column of the table.
=IIF(Fields!agent_type = "AgentType1", mailpackage2.Value, Cint(0)) in the second row, first column of the table.
=IIF(Fields!agent_type = "AgentType1", mailpackage3.Value, Cint(0)) in the third row, First column of the table.
And so on....... alternating between agent_type and mailpackage for each cell.
Grouping1: Group by Region, insert page after each group.
What happened was the following:- ((I am putting the first region, because it is also happening for the other regions too)
Region: New York
AgentType1 AgentType2 AgentType3 AgentType4
Package1 2000 0 0 0
Package2 2300 0 0 0
Package3 0 0 0 0
break page
Region: New York
AgentType1 AgentType2 AgentType3 AgentType4
Package1 0 0 0 0
Package2 0 0 0 0
Package3 0 5 0 0
break page
Region: New York
AgentType1 AgentType2 AgentType3 AgentType4
Package1 0 0 150 0
Package2 0 0 2 0
Package3 0 0 4000 0
break page
(on a side note, this region didn't print out AgentType4 because there were no data associated with it)
The question is, is there anything else I could have done to prevent this ? as you can see, the data is correct and placed in their right cells but somehow, they won't join together. I got a feelin that it has something to do with the expression that I had put in each cell.
Can someone help or point me in the right direction ? This is really bothering me and I couldn't figure out why it was doing this. Couldnt find any links or maybe i am putting in the wrong keywords in the search. Thanks muchly !
Bernard Ong
May it be that yor "new" Report is a changed copy of the old one and you didn't remove the grouping by AgentType?|||Hi there Markus.
Thanks for the reply.
Actually, The old report was html generated. I am basically creating the new report with the new requirements/design using SSRS 2000 now.
At first I thought ti was the agent type too. But when I checked my groupings again, it only has the region grouping.
I even recreated the whole table, start fresh again and made certain that it is only grouped by Region. Same problem...
Thanks for pointing out the agent type grouping though!
Bernard Ong
|||Well it certainly looks more like a Matrix than a Table layout. If you switch from the table to a matrix, you do not need all the expressions at all. If you do not want to change your report design, try to do it in the query instead then by joining a sub-query for each agent. HTH|||Thanks for the reply BYU
I am looking up on how to do a matrix, but it seems that I still need a recursive or repetitive row, in this case from what I had seen in the dataset, would be the agent-type. Unless there was another way to do it ?
However, due to the many packages that an agent could mail out, (even in landscape) it would be way too long for the printer or even the preview to look.
Thanks for taking a look into this. I appreciate any more tips or hints with this scenario.
Sincerely,
Bernard Ong
|||Hello all again,
I am trying to figure out how to use the matrix (never really use them before, always with tables) and I am a little frustrated on how to get it to work or even trying to understand it.
Any references or help which I can refer to, to get me going ? my so called "Matrix" looks like some daVinci code that needs to be broken so that it could be interpreted ! :)
Thanks !
Bernard Ong
|||Hi,
Could you please check if your initial SQL query has a 'order by region,agenttype' in it ?
If you clients are not really concerned about the excel export of this report - you can consider having a table with a grouping - 'region' and a matrix inside the group displaying data for each region repetitively.
so say table 1
create a group1 header -based on 'region'
add another header row for this group
In this second header row insert a matrix
row field- Agent type
column field- mailpackage types
let me know if you need more explanation. however, this report cannot be exported to excel since export of nested data regions is not supported.
Thanks,
PB
|||Hi PB
Thanks for the reply !
I am going to try your suggestion and see whether that works. I never thought of using a matrix inside a table, and that might just work.
To answer your question:- Yes the query has a group by region AND agent_Type.
Thanks to the post by BYU, I am currently trying to wrestle with Matrix ("the blue or red pill" :) ) and it is slowly doing what I "think" it is doing.
It is just confusing because the matrix controls work VERY differently with the table. I guess I have to "Add Row" in the cell instead of highlighting the whole row.
I am not sure about this, but with the way I am doing it right now, sounds similar to what you saying except without the header. is that right ?
Sincerely,
Bernard Ong
Hi,
I was talking more about an ORDER BY clause after the Group BY.
select region,etc,cetc
GROUP BY region, agent type,etc
ORDER BY Region,Agent Type.
That probably will make your original table layout also work.
Good luck,
PB
|||Sorry ORDER BY REgion , Package , Agent Type
|||Hi PB,
Sorry, must have read the post wrongly. and yes, i do have an order by clause, but with the package in there, it won't work.
The way it is as the dataset is shown, package1, package2 and so on, are the names of the packages(mailpackages column), and the data associated with them are counts or totals.
region agent_type mailpackage1 mailpackage2 mailpackage3
New York Agenttype1 2000 2300 0
New York Agenttype2 0 0 5
New York Agenttype3 150 2 4000
Central Agenttype2 1234 5678 9
Central Agenttype4 435 1 0
MidWest Agenttype1 555 0 0
West Agenttype1 1 45 0
West Agenttype2 0 2 3
Only region and agent_type are string characters, so using the package name in the order by won't work.
Thanks though !
Bernard Ong
|||Hi Bernard,
I'm still a little unsure of your problem ....could you please explain how the data is stored...I mean how do you get the mailpackage1,mailpackage2 in the stored procedure ....is this a column indicating the type/category of package ?
In that case even if it is a number field , you should order by that before agent type
say you have a table with following columns
region id, mail_package_count, agent_type, packageNo.
newyork, 200, 1 45
new york 500 2 45
new york 30 3 500
This indicates that 200 counts of package45 were delivered by agent 1 , 500 counts of package45 were delivered by agent2 .....
IS that how it is?
I think you may have to make a small change in your stored procedure itself...returning the dataset ordered by region and packaget instead of agent type.
Please ignore this post if I got your problem wrong and Sorry if I confused you even more...
Thanks,
PB
|||Hi Pbala,
Yeah ! that is exactly how it is without the packageNo. I am sorry that it wasn't clear enough, but in my situation, the numbers represent the count of the packages delivered. I still need the agent type because the client wants to see how many packages were sent out by a particular agent type.
Such as an Elite Agent type, or a basic agent, and they would make a decision out of it. To quote, this is how it is going to look like.
region id, mail_package_1_count, mail_package_2_count, mail_package_3_count, agent_type
newyork, 200 123 456 1
new york 500 342 688 2
new york 30 0 0 3
Hope this makes more sense now.
Still working on the problem but I am getting somewhere though. Right now, with using the matrix, i am able to get the right totals and how it would look like on the report with a "specific" region.
however, when I tried to have the all regions, it just clumped everything into one matrix without showing the other regions. this meaning that i got the total for ALL regions in one page, instead of them breaking out in different pages with each region.
Is there an expression or something am I missing to do ?
Thanks.
Bernard Ong
Hello all once again :)
Just an update on the situation here.
First off, want to thank Pbala, BYU, and Mark for helping out with this thread.
After much reading and trying to figure out the matrix, I got the report working.
I was confused with how to use the Matrix which in the end did more harm than good and finally got the hang of it.
It was all about the groupings and how the Matrix does not act like a table. I resolve this issue by doing the following groupings.
For the Row Groupings:
I only needed to use ONE row Grouping and I ended up putting alot of row groupings thinking that they acted like rows from the table.
Boy, was I dead wrong. I found out that you have to select a cell (Row Section specifically) in the matrix to add a row in the column that would extend to the end.
BY clicking on the row header, it only allows you to add a row grouping and not a row. Either way. I grouped only the region in the
Matrix Properties->Groupings. NExt I keep adding the amount of rows needed to represent a package and drag their fields into the Data section.
For the Column Groupings:
Essentially the same thing, BUT I put the field!agent_type in the column section. Next I entered the the agent_type grouping in the column
grouping of the matrix.
The trouble i was having was not understanding the difference between the Row Groupings and Rows. I keep adding the row groupings which ended up not printing
What i needed for the report. After realizing that problem, I did a bit more research, and figured out that only the cell of the matrix allows Rows.
After that, I put the Subtotal field and it works ! My report printed exactly like the scenario.
Couldn't have done this without this forum and without the ideas and suggestions presented by the posters of this thread ! Thanks alot !
However, I do have another question concerning about the matrix, Is it possible to have an actual total of everything at the bottom of the screen like how the Table Footer would have ? Or the Matrix is only limited to having a subtotal ? The reason why I ask this because I have a option called "All Regions" which should give me the totals of all the regions including each individual region printed out on every page. I achieved this by having a table at the bottom of the matrix to collect the totals. I made the table into a table footer so that it encapsulates everything, and using the Visibility feature, Turn it off if the user only selected a specific region, but turn it on if the user selected "All region". was wondering whether the matrix could also achieve this but in an easier way like how the table would ?
thanks !
Bernard Ong
Question on how to display data in this unique situation.....
Hi guys,
Man I do come up with strange scenarios, but that is the joy of working in software field right ? ;-)
First off, thanks to anyone taking their time to read this, and Ihope this post paints a clearer picture better than my previous posts.
I have an old stored procedure (which I didn't create) that produces a dataset of the following:-
((All names and values had been changed to protect confidentiality))
region agent_type mailpackage1 mailpackage2 mailpackage3
New York Agenttype1 2000 2300 0
New York Agenttype2 0 0 5
New York Agenttype3 150 2 4000
Central Agenttype2 1234 5678 9
Central Agenttype4 435 1 0
MidWest Agenttype1 555 0 0
West Agenttype1 1 45 0
West Agenttype2 0 2 3
A little bit of explanation:-
Each region can have any type of agents, specified by the number to distinguish different agent types. these agent types mail specific packages to their customers depending on the situation and what the customers asked for. the numbers in each mail package indicate the total that had been sent out by a particular type of an agent. So in this case we are not dealing wtih how many agents are there, just how many packages had been sent out by a specific type of an agent in a region.
Previously the report was produced like you would see in the above dataset. However the client would want it the other way around. Though I didn't show it here, there are plenty of other packages but I am picking three for clarity sake.
So the "new" Report would have to look something like this.
Region: New York
AgentType1 AgentType2 AgentType3 AgentType4
Package1 2000 0 150 0
Package2 2300 0 2 0
Package3 0 5 4000 0
break page
Region: Central
AgentType1 AgentType2 AgentType3 AgentType4
Package1 0 1234 0 435
Package2 0 5678 0 1
Package3 0 9 0 0
- break Page -- and so on
I had created a table in the RS that looked like the above with expressions written into the each cell that holds a value. The expression is
=IIF(Fields!agent_type = "AgentType1", mailpackage1.Value, Cint(0)) in the first row, first column of the table.
=IIF(Fields!agent_type = "AgentType1", mailpackage2.Value, Cint(0)) in the second row, first column of the table.
=IIF(Fields!agent_type = "AgentType1", mailpackage3.Value, Cint(0)) in the third row, First column of the table.
And so on....... alternating between agent_type and mailpackage for each cell.
Grouping1: Group by Region, insert page after each group.
What happened was the following:- ((I am putting the first region, because it is also happening for the other regions too)
Region: New York
AgentType1 AgentType2 AgentType3 AgentType4
Package1 2000 0 0 0
Package2 2300 0 0 0
Package3 0 0 0 0
break page
Region: New York
AgentType1 AgentType2 AgentType3 AgentType4
Package1 0 0 0 0
Package2 0 0 0 0
Package3 0 5 0 0
break page
Region: New York
AgentType1 AgentType2 AgentType3 AgentType4
Package1 0 0 150 0
Package2 0 0 2 0
Package3 0 0 4000 0
break page
(on a side note, this region didn't print out AgentType4 because there were no data associated with it)
The question is, is there anything else I could have done to prevent this ? as you can see, the data is correct and placed in their right cells but somehow, they won't join together. I got a feelin that it has something to do with the expression that I had put in each cell.
Can someone help or point me in the right direction ? This is really bothering me and I couldn't figure out why it was doing this. Couldnt find any links or maybe i am putting in the wrong keywords in the search. Thanks muchly !
Bernard Ong
May it be that yor "new" Report is a changed copy of the old one and you didn't remove the grouping by AgentType?|||Hi there Markus.
Thanks for the reply.
Actually, The old report was html generated. I am basically creating the new report with the new requirements/design using SSRS 2000 now.
At first I thought ti was the agent type too. But when I checked my groupings again, it only has the region grouping.
I even recreated the whole table, start fresh again and made certain that it is only grouped by Region. Same problem...
Thanks for pointing out the agent type grouping though!
Bernard Ong
|||Well it certainly looks more like a Matrix than a Table layout. If you switch from the table to a matrix, you do not need all the expressions at all. If you do not want to change your report design, try to do it in the query instead then by joining a sub-query for each agent. HTH|||Thanks for the reply BYU
I am looking up on how to do a matrix, but it seems that I still need a recursive or repetitive row, in this case from what I had seen in the dataset, would be the agent-type. Unless there was another way to do it ?
However, due to the many packages that an agent could mail out, (even in landscape) it would be way too long for the printer or even the preview to look.
Thanks for taking a look into this. I appreciate any more tips or hints with this scenario.
Sincerely,
Bernard Ong
|||Hello all again,
I am trying to figure out how to use the matrix (never really use them before, always with tables) and I am a little frustrated on how to get it to work or even trying to understand it.
Any references or help which I can refer to, to get me going ? my so called "Matrix" looks like some daVinci code that needs to be broken so that it could be interpreted ! :)
Thanks !
Bernard Ong
|||Hi,
Could you please check if your initial SQL query has a 'order by region,agenttype' in it ?
If you clients are not really concerned about the excel export of this report - you can consider having a table with a grouping - 'region' and a matrix inside the group displaying data for each region repetitively.
so say table 1
create a group1 header -based on 'region'
add another header row for this group
In this second header row insert a matrix
row field- Agent type
column field- mailpackage types
let me know if you need more explanation. however, this report cannot be exported to excel since export of nested data regions is not supported.
Thanks,
PB
|||Hi PB
Thanks for the reply !
I am going to try your suggestion and see whether that works. I never thought of using a matrix inside a table, and that might just work.
To answer your question:- Yes the query has a group by region AND agent_Type.
Thanks to the post by BYU, I am currently trying to wrestle with Matrix ("the blue or red pill" :) ) and it is slowly doing what I "think" it is doing.
It is just confusing because the matrix controls work VERY differently with the table. I guess I have to "Add Row" in the cell instead of highlighting the whole row.
I am not sure about this, but with the way I am doing it right now, sounds similar to what you saying except without the header. is that right ?
Sincerely,
Bernard Ong
Hi,
I was talking more about an ORDER BY clause after the Group BY.
select region,etc,cetc
GROUP BY region, agent type,etc
ORDER BY Region,Agent Type.
That probably will make your original table layout also work.
Good luck,
PB
|||Sorry ORDER BY REgion , Package , Agent Type
|||Hi PB,
Sorry, must have read the post wrongly. and yes, i do have an order by clause, but with the package in there, it won't work.
The way it is as the dataset is shown, package1, package2 and so on, are the names of the packages(mailpackages column), and the data associated with them are counts or totals.
region agent_type mailpackage1 mailpackage2 mailpackage3
New York Agenttype1 2000 2300 0
New York Agenttype2 0 0 5
New York Agenttype3 150 2 4000
Central Agenttype2 1234 5678 9
Central Agenttype4 435 1 0
MidWest Agenttype1 555 0 0
West Agenttype1 1 45 0
West Agenttype2 0 2 3
Only region and agent_type are string characters, so using the package name in the order by won't work.
Thanks though !
Bernard Ong
|||Hi Bernard,
I'm still a little unsure of your problem ....could you please explain how the data is stored...I mean how do you get the mailpackage1,mailpackage2 in the stored procedure ....is this a column indicating the type/category of package ?
In that case even if it is a number field , you should order by that before agent type
say you have a table with following columns
region id, mail_package_count, agent_type, packageNo.
newyork, 200, 1 45
new york 500 2 45
new york 30 3 500
This indicates that 200 counts of package45 were delivered by agent 1 , 500 counts of package45 were delivered by agent2 .....
IS that how it is?
I think you may have to make a small change in your stored procedure itself...returning the dataset ordered by region and packaget instead of agent type.
Please ignore this post if I got your problem wrong and Sorry if I confused you even more...
Thanks,
PB
|||Hi Pbala,
Yeah ! that is exactly how it is without the packageNo. I am sorry that it wasn't clear enough, but in my situation, the numbers represent the count of the packages delivered. I still need the agent type because the client wants to see how many packages were sent out by a particular agent type.
Such as an Elite Agent type, or a basic agent, and they would make a decision out of it. To quote, this is how it is going to look like.
region id, mail_package_1_count, mail_package_2_count, mail_package_3_count, agent_type
newyork, 200 123 456 1
new york 500 342 688 2
new york 30 0 0 3
Hope this makes more sense now.
Still working on the problem but I am getting somewhere though. Right now, with using the matrix, i am able to get the right totals and how it would look like on the report with a "specific" region.
however, when I tried to have the all regions, it just clumped everything into one matrix without showing the other regions. this meaning that i got the total for ALL regions in one page, instead of them breaking out in different pages with each region.
Is there an expression or something am I missing to do ?
Thanks.
Bernard Ong
Hello all once again :)
Just an update on the situation here.
First off, want to thank Pbala, BYU, and Mark for helping out with this thread.
After much reading and trying to figure out the matrix, I got the report working.
I was confused with how to use the Matrix which in the end did more harm than good and finally got the hang of it.
It was all about the groupings and how the Matrix does not act like a table. I resolve this issue by doing the following groupings.
For the Row Groupings:
I only needed to use ONE row Grouping and I ended up putting alot of row groupings thinking that they acted like rows from the table.
Boy, was I dead wrong. I found out that you have to select a cell (Row Section specifically) in the matrix to add a row in the column that would extend to the end.
BY clicking on the row header, it only allows you to add a row grouping and not a row. Either way. I grouped only the region in the
Matrix Properties->Groupings. NExt I keep adding the amount of rows needed to represent a package and drag their fields into the Data section.
For the Column Groupings:
Essentially the same thing, BUT I put the field!agent_type in the column section. Next I entered the the agent_type grouping in the column
grouping of the matrix.
The trouble i was having was not understanding the difference between the Row Groupings and Rows. I keep adding the row groupings which ended up not printing
What i needed for the report. After realizing that problem, I did a bit more research, and figured out that only the cell of the matrix allows Rows.
After that, I put the Subtotal field and it works ! My report printed exactly like the scenario.
Couldn't have done this without this forum and without the ideas and suggestions presented by the posters of this thread ! Thanks alot !
However, I do have another question concerning about the matrix, Is it possible to have an actual total of everything at the bottom of the screen like how the Table Footer would have ? Or the Matrix is only limited to having a subtotal ? The reason why I ask this because I have a option called "All Regions" which should give me the totals of all the regions including each individual region printed out on every page. I achieved this by having a table at the bottom of the matrix to collect the totals. I made the table into a table footer so that it encapsulates everything, and using the Visibility feature, Turn it off if the user only selected a specific region, but turn it on if the user selected "All region". was wondering whether the matrix could also achieve this but in an easier way like how the table would ?
thanks !
Bernard Ong
Question on how to display data in this unique situation using Matrix.....
Hi guys,
Man I do come up with strange scenarios, but that is the joy of working in software field right ? ;-)
First off, thanks to anyone taking their time to read this, and Ihope this post paints a clearer picture better than my previous posts.
I have an old stored procedure (which I didn't create) that produces a dataset of the following:-
((All names and values had been changed to protect confidentiality))
region agent_type mailpackage1 mailpackage2 mailpackage3
New York Agenttype1 2000 2300 0
New York Agenttype2 0 0 5
New York Agenttype3 150 2 4000
Central Agenttype2 1234 5678 9
Central Agenttype4 435 1 0
MidWest Agenttype1 555 0 0
West Agenttype1 1 45 0
West Agenttype2 0 2 3
A little bit of explanation:-
Each region can have any type of agents, specified by the number to distinguish different agent types. these agent types mail specific packages to their customers depending on the situation and what the customers asked for. the numbers in each mail package indicate the total that had been sent out by a particular type of an agent. So in this case we are not dealing wtih how many agents are there, just how many packages had been sent out by a specific type of an agent in a region.
Previously the report was produced like you would see in the above dataset. However the client would want it the other way around. Though I didn't show it here, there are plenty of other packages but I am picking three for clarity sake.
So the "new" Report would have to look something like this.
Region: New York
AgentType1 AgentType2 AgentType3 AgentType4
Package1 2000 0 150 0
Package2 2300 0 2 0
Package3 0 5 4000 0
break page
Region: Central
AgentType1 AgentType2 AgentType3 AgentType4
Package1 0 1234 0 435
Package2 0 5678 0 1
Package3 0 9 0 0
- break Page -- and so on
I had created a table in the RS that looked like the above with expressions written into the each cell that holds a value. The expression is
=IIF(Fields!agent_type = "AgentType1", mailpackage1.Value, Cint(0)) in the first row, first column of the table.
=IIF(Fields!agent_type = "AgentType1", mailpackage2.Value, Cint(0)) in the second row, first column of the table.
=IIF(Fields!agent_type = "AgentType1", mailpackage3.Value, Cint(0)) in the third row, First column of the table.
And so on....... alternating between agent_type and mailpackage for each cell.
Grouping1: Group by Region, insert page after each group.
What happened was the following:- ((I am putting the first region, because it is also happening for the other regions too)
Region: New York
AgentType1 AgentType2 AgentType3 AgentType4
Package1 2000 0 0 0
Package2 2300 0 0 0
Package3 0 0 0 0
break page
Region: New York
AgentType1 AgentType2 AgentType3 AgentType4
Package1 0 0 0 0
Package2 0 0 0 0
Package3 0 5 0 0
break page
Region: New York
AgentType1 AgentType2 AgentType3 AgentType4
Package1 0 0 150 0
Package2 0 0 2 0
Package3 0 0 4000 0
break page
(on a side note, this region didn't print out AgentType4 because there were no data associated with it)
The question is, is there anything else I could have done to prevent this ? as you can see, the data is correct and placed in their right cells but somehow, they won't join together. I got a feelin that it has something to do with the expression that I had put in each cell.
Can someone help or point me in the right direction ? This is really bothering me and I couldn't figure out why it was doing this. Couldnt find any links or maybe i am putting in the wrong keywords in the search. Thanks muchly !
Bernard Ong
May it be that yor "new" Report is a changed copy of the old one and you didn't remove the grouping by AgentType?|||Hi there Markus.
Thanks for the reply.
Actually, The old report was html generated. I am basically creating the new report with the new requirements/design using SSRS 2000 now.
At first I thought ti was the agent type too. But when I checked my groupings again, it only has the region grouping.
I even recreated the whole table, start fresh again and made certain that it is only grouped by Region. Same problem...
Thanks for pointing out the agent type grouping though!
Bernard Ong
|||Well it certainly looks more like a Matrix than a Table layout. If you switch from the table to a matrix, you do not need all the expressions at all. If you do not want to change your report design, try to do it in the query instead then by joining a sub-query for each agent. HTH|||Thanks for the reply BYU
I am looking up on how to do a matrix, but it seems that I still need a recursive or repetitive row, in this case from what I had seen in the dataset, would be the agent-type. Unless there was another way to do it ?
However, due to the many packages that an agent could mail out, (even in landscape) it would be way too long for the printer or even the preview to look.
Thanks for taking a look into this. I appreciate any more tips or hints with this scenario.
Sincerely,
Bernard Ong
|||Hello all again,
I am trying to figure out how to use the matrix (never really use them before, always with tables) and I am a little frustrated on how to get it to work or even trying to understand it.
Any references or help which I can refer to, to get me going ? my so called "Matrix" looks like some daVinci code that needs to be broken so that it could be interpreted ! :)
Thanks !
Bernard Ong
|||Hi,
Could you please check if your initial SQL query has a 'order by region,agenttype' in it ?
If you clients are not really concerned about the excel export of this report - you can consider having a table with a grouping - 'region' and a matrix inside the group displaying data for each region repetitively.
so say table 1
create a group1 header -based on 'region'
add another header row for this group
In this second header row insert a matrix
row field- Agent type
column field- mailpackage types
let me know if you need more explanation. however, this report cannot be exported to excel since export of nested data regions is not supported.
Thanks,
PB
|||Hi PB
Thanks for the reply !
I am going to try your suggestion and see whether that works. I never thought of using a matrix inside a table, and that might just work.
To answer your question:- Yes the query has a group by region AND agent_Type.
Thanks to the post by BYU, I am currently trying to wrestle with Matrix ("the blue or red pill" :) ) and it is slowly doing what I "think" it is doing.
It is just confusing because the matrix controls work VERY differently with the table. I guess I have to "Add Row" in the cell instead of highlighting the whole row.
I am not sure about this, but with the way I am doing it right now, sounds similar to what you saying except without the header. is that right ?
Sincerely,
Bernard Ong
Hi,
I was talking more about an ORDER BY clause after the Group BY.
select region,etc,cetc
GROUP BY region, agent type,etc
ORDER BY Region,Agent Type.
That probably will make your original table layout also work.
Good luck,
PB
|||Sorry ORDER BY REgion , Package , Agent Type
|||Hi PB,
Sorry, must have read the post wrongly. and yes, i do have an order by clause, but with the package in there, it won't work.
The way it is as the dataset is shown, package1, package2 and so on, are the names of the packages(mailpackages column), and the data associated with them are counts or totals.
region agent_type mailpackage1 mailpackage2 mailpackage3
New York Agenttype1 2000 2300 0
New York Agenttype2 0 0 5
New York Agenttype3 150 2 4000
Central Agenttype2 1234 5678 9
Central Agenttype4 435 1 0
MidWest Agenttype1 555 0 0
West Agenttype1 1 45 0
West Agenttype2 0 2 3
Only region and agent_type are string characters, so using the package name in the order by won't work.
Thanks though !
Bernard Ong
|||Hi Bernard,
I'm still a little unsure of your problem ....could you please explain how the data is stored...I mean how do you get the mailpackage1,mailpackage2 in the stored procedure ....is this a column indicating the type/category of package ?
In that case even if it is a number field , you should order by that before agent type
say you have a table with following columns
region id, mail_package_count, agent_type, packageNo.
newyork, 200, 1 45
new york 500 2 45
new york 30 3 500
This indicates that 200 counts of package45 were delivered by agent 1 , 500 counts of package45 were delivered by agent2 .....
IS that how it is?
I think you may have to make a small change in your stored procedure itself...returning the dataset ordered by region and packaget instead of agent type.
Please ignore this post if I got your problem wrong and Sorry if I confused you even more...
Thanks,
PB
|||Hi Pbala,
Yeah ! that is exactly how it is without the packageNo. I am sorry that it wasn't clear enough, but in my situation, the numbers represent the count of the packages delivered. I still need the agent type because the client wants to see how many packages were sent out by a particular agent type.
Such as an Elite Agent type, or a basic agent, and they would make a decision out of it. To quote, this is how it is going to look like.
region id, mail_package_1_count, mail_package_2_count, mail_package_3_count, agent_type
newyork, 200 123 456 1
new york 500 342 688 2
new york 30 0 0 3
Hope this makes more sense now.
Still working on the problem but I am getting somewhere though. Right now, with using the matrix, i am able to get the right totals and how it would look like on the report with a "specific" region.
however, when I tried to have the all regions, it just clumped everything into one matrix without showing the other regions. this meaning that i got the total for ALL regions in one page, instead of them breaking out in different pages with each region.
Is there an expression or something am I missing to do ?
Thanks.
Bernard Ong
Hello all once again :)
Just an update on the situation here.
First off, want to thank Pbala, BYU, and Mark for helping out with this thread.
After much reading and trying to figure out the matrix, I got the report working.
I was confused with how to use the Matrix which in the end did more harm than good and finally got the hang of it.
It was all about the groupings and how the Matrix does not act like a table. I resolve this issue by doing the following groupings.
For the Row Groupings:
I only needed to use ONE row Grouping and I ended up putting alot of row groupings thinking that they acted like rows from the table.
Boy, was I dead wrong. I found out that you have to select a cell (Row Section specifically) in the matrix to add a row in the column that would extend to the end.
BY clicking on the row header, it only allows you to add a row grouping and not a row. Either way. I grouped only the region in the
Matrix Properties->Groupings. NExt I keep adding the amount of rows needed to represent a package and drag their fields into the Data section.
For the Column Groupings:
Essentially the same thing, BUT I put the field!agent_type in the column section. Next I entered the the agent_type grouping in the column
grouping of the matrix.
The trouble i was having was not understanding the difference between the Row Groupings and Rows. I keep adding the row groupings which ended up not printing
What i needed for the report. After realizing that problem, I did a bit more research, and figured out that only the cell of the matrix allows Rows.
After that, I put the Subtotal field and it works ! My report printed exactly like the scenario.
Couldn't have done this without this forum and without the ideas and suggestions presented by the posters of this thread ! Thanks alot !
However, I do have another question concerning about the matrix, Is it possible to have an actual total of everything at the bottom of the screen like how the Table Footer would have ? Or the Matrix is only limited to having a subtotal ? The reason why I ask this because I have a option called "All Regions" which should give me the totals of all the regions including each individual region printed out on every page. I achieved this by having a table at the bottom of the matrix to collect the totals. I made the table into a table footer so that it encapsulates everything, and using the Visibility feature, Turn it off if the user only selected a specific region, but turn it on if the user selected "All region". was wondering whether the matrix could also achieve this but in an easier way like how the table would ?
thanks !
Bernard Ong