This is another gem to keep around.
A couple of weeks have passed, and little progress made, or so it would seem on the surface. Especially if one’s only view is through this blog. Truth is, we have been stacked! Kids are wrapping up 10 days off school today, headed back for the sprint to summer bright and early Tuesday.
We took the opportunity on Friday for an impromptu trip to the City on Good Friday. We had a great time, saw all sorts of things. We apparently were not the only ones, as the entire city seemed packed with people. New Orleans is such a vibrant city. While walking through the French Quarter we saw lots of different people. Different Religions, Different Nationalities, Different Orientations, Different Socio-Economic states. Kate saw lots of pan handlers, beggars, gutter punks and what not. We spent a fair amount of time Friday night having conversations about what she had seen. As a parent, it was a trying time. The Dichotomy of wanting to have this discussion with a growing child wrested with the desire to protect her from the ways of the world. I can’t say it was painful, but it was difficult.
Erika and I are blessed that we have 2, mature beyond their years, children. We are also blessed that we have the security of wonderful home to retreat to. The lesson, beautifully wrapped up at 11:55pm Friday night. God loves us as humans. God loves all humans. God’s love is unconditional. God may not like us, individually or corporately, sometimes. But God loves us ALWAYS. Likewise, Erika and I love our children. Nothing can change that. Kate and Ian may do or say things that we may not like, but we will always love them. Further, other people may do or say things we do not like, but we love them as people. We may not be able to provide help for everyone and God does not expect us to. That does not mean God will not love us, or that God does not love them. Sometimes the things we think will help, may in fact hurt other people in the long run.
Kate is a smart girl. She, like all of us is hurt seeing others in need. She like all of us wants to help. Her heart hurts for those who need help. She is learning that our choices, everyday have consequences. Sometimes they are positive, sometimes they are negative. Some choices lead to a healthy life, other choices lead to addiction, homelessness, hunger. Some choices we have control over, while other choices we have little control over. The best we can do is make wise choices when we can. When we do not make the wisest choices, we need to recognize it and learn from those poor choices.
Our love for our children is unwavering, it is unconditional. God’s love for his children is unwavering, it is unconditional.
We are looking for qualified SharePoint Developers at GCR . Reach out to me if you are or know someone who might be a good match.
Erika Mixed up a batch of her Fajita Rub a little while ago and the smell has penetrated every nook and cranny in the house. This stuff is intoxicating!
I bet if we ask nicely she will share the recipe.
Do you ever get questioned regarding the validity of data provided by your SSRS Reports? I do regularly: ‘This does not look right’, ‘Are you sure that is the right number?’ that kind of thing. As a rule my answer is I don’t know. The report simply reflects the data that is in the database, so let’s look at it.
Understanding your finished product is all about understanding how SSRS collects and regurgitates the data in the data source. SSRS has:
I am not going to go into all of these, but suffice to say each of these is an opportunity for data to be mangled. The DataSource is basically the connection to the source table, view or stored procedure, typically in SQL, however it could be any number of other data sources. As a rule, I use SQL Servers or SharePoint Servers, There can be many DataSources in a single SSRS Report. The DataSet is just what the name implies. It provides data to elements in the report. A Dataset cannot provide data to a parameter or filter that is to be used to filter the very same dataset. That would cause circular logic and the world would implode, so don’t do it. There can be many datasets and usually tend to be many on any given report. Mind you that we can filter in the dataset using a where clause in a query, or we could filter using a filter expression defined on the dataset object. There are reasons to do one or the other and I am not going to dig into that right now. Within the report itself we can add objects that allow for grouping, filtering, sorting and whatnot. These include but are not limited to:
Trust me there’s lots more in there that we can set filter or a grouping and easily change the end product.
As you can see there are lots of ways just within SSRS to manipulate the data output. Unfortunately, we are not done yet. The Source of the data can also be manipulated to provide data in whatever manner we are looking for. If we are connecting to a table, well that’s pretty cut and dry (unless that is simply a manifestation of a view). However if we are connecting to a view or a stored procedure, then all bets are off, because those are capable of providing a manipulated view of any number of tables and other views.
Rule of thumb: document your SSRS to the best of your ability, and get to know your underlying data before you get started. Finally, be prepared to interrogate your data ad nauseum both for your understanding as well as justification of your end product.
SSRS is not simply an extension of Microsoft SQL Server, it is a monster all to itself. If you are not prepared to meet it’s challenges, you will never be able to meet those of the business users it serves.
SSRS Report Builder 3.0 is a very good tool once you understand it. But clearly some parts were built by eager, thorough coders and others were less ambitious. I fear the ability to embed images from a Database is one such example. Conceptually it is right, the executional is, well, less than exceptional. There are very few actual options for rendering, specifically, compressing the image for faster rendering. Now, I do realize that a developer could attach some code to accomplish it, however, it is not very realistic or easily accomplished. Perhaps in the next version they will update this…perhaps.