SQLPam's Blog

May 9, 2012

Sad Day

Filed under: Personal thoughts — sqlpam @ 7:24 pm

We knew this day was coming since near the beginning of the year. We said goodbye to Ziggy, our beautiful, deaf cat. We have had him for almost 12 years. He and Ryan grew up together. He was Ryan’s constant companion and sometime play mate. They were often caught playing tag with Ryan having the scars to prove it.

Bobby brought home a spindly white kitten to be the Goober to our black cat – Boog. Boog was highly offended that we brought this upstart into her home. I don’t know that she ever got over it. After seeing his eyes though – he became Ziggy after David Bowie’s character Ziggy Stardust. He had odd eyes – one blue the other golden/green.

Ziggy seemed extra calm – especially considering the loud noises that were going on with a four year old in the house. We had him almost a month when we discovered he was deaf. Boog took off as soon as the lawn mower was started. He only ran with the gust from the blade startled him.

His deafness made it hard to train him. It also seemed to make him grumpy. His would swat anything that irritated him – which was most things. Ryan saw it as a game – so life was pretty good. He stayed indoors, slept in our bed and got big – twenty pounds big.

Over the holidays we noticed what we assumed to be a cyst. By the time the time our schedule allowed for a vet visit – it had grown. By the time surgery could be arranged – his vet said it was too big. We found another vet. Unfortunately, the surgery revealed that it was cancer and our budget did not include room for radiation treatments at 5K a pop.

The growth came back with a vengeance. He was starting to have trouble walking and showing signs of bowel incontinence. Ryan made the call to see the vet today. But as chance would have it – he seemed to be doing much better today. We found that the tumor had ruptured and was oozing out to relieve pressure. After agonizing over the decision, we said goodbye. The vet did not push and showed the patience of a saint.

We will miss him – grumpy Gus that he was. I don’t think he knew he was a cat. He would wait by the door for us and meow loudly to greet us home. I think that is what I will miss most – he was always glad to see us get home -even if it was that he hoped we would feed him something extra. Good bye old friend – you will be missed.

May 2, 2012

Speakers with too many choices

Filed under: Community,SQL Saturday — sqlpam @ 11:39 am

I just got thru reading Eddie Wuerch’s ( B | T ) blog on Cross-Submitting to SQL Saturday Events. I consider myself both a seasoned organizer and speaker when it comes to SQL Saturdays. I do understand both sides of the event very well – which is why I am thrilled every time I am selected to speak. There are choices the organizer has to make and some of them are very difficult.

When selecting sessions, I usually go for a 2 step process. The first step is to narrow down the speakers. This has only been truly painful one year where I had 55 speakers submit and only 42 slots. Sending out the “sorry you were not selected but may be an alternate” emails really hurt. Once I select the speakers, I send an email that they have been selected. If they only submitted one session they know what they are speaking on immediately – otherwise there is a delay. I ask them to commit at this point and only assume the commitment after I receive the response. I had one exception to that – but that won’t be applied next year. In my mind, until there is a 2 way commitment – there is no contract. These speakers are doing this out of the kindness of their hearts at their expense. If I do not get a commitment – they do not go on the schedule and someone else may be added or another speaker gets multiple sessions.

I now know who my speakers are going to be and can organize them into a schedule. My speakers also know – so they can get travel scheduled early enough (hopefully) to get a break on the cost of travel. They may not know what they are speaking on yet – but they know they need to arrange to be here. I now have a little breathing space with the schedule.

This is where the time consuming piece is for me. It is a good thing to have choices but sometimes the number of choices can be overwhelming. As part of the “You have been selected” email, I ask my speakers if they have time constraints on when during the day they can speak. I have a number that need to either leave early in the day or will arrive late in the morning. They are paying for their travel – so whatever it takes works for me. I found this avoids a lot of last minute changes to schedules. I also have a little time to get the local group involved in making some of the choices.

Once the final decisions are made the speaker gets a notification of the session selected. If they need to cancel – I hope and pray they cancel before everything goes to printing. I usually at this point just ask someone already on the schedule to add a session – I usually don’t get complaints about that. Cancelling the day of the event is where I get frustrated. There are legitimate reasons – death in the family, car accident, or travel delays are several that have actually happened. I have had no shows with no notification or inadequate notification – these are issues that place the speaker on a special list for future events. This is not to say they never have a chance at any of my future events – just that a backup will be in place ahead of time if they are selected.

So for me – if a speaker lets me know early in the process – it is not an issue. It would be nice to know which speakers are cross-submitting so that I can be prepared for a back out. But having them back out before the final session selection does not hurt my feelings or my pride. This is about community. If they are backing out of my event for another SQL Saturday – the community is still winning. As long as I know before the schedule is printed – it is no skin off my nose.

Having so many SQL Saturdays that this is becoming an issue for some is not a bad thing. Sometimes it feels like we just need more Saturdays in the year.

 

April 18, 2012

SQL Saturday #111 recap

Filed under: Community,SQL Saturday — sqlpam @ 2:50 pm

I was very honored to be accepted to speak at SQL Saturday 111 in Atlanta. There were so many submissions and such well-known names that I was grateful to be included in such company.

I took Friday off – since this was supposed to be a shoe string trip. I left early and drove up stopping at my to visit a longtime family friend in Buford – about 45 minutes from the event. I had a nice visit and changed into SQL Saturday gear for the speaker dinner. My GPS got me there with no mishaps.

I got to the dinner and there were so many familiar faces it was hard to know where to start. I won’t even try to ID them all here. I got my hugs from Karla (Twitter ), Stacia ( Twitter ), Jessica ( Twitter ), and Aaron ( Twitter ). The room read like a who’s who list for the SQL community. I sat down to a delicious dinner sharing the company of Stuart ( Twitter ) and Laura – a volunteer for the event. We discussed the in’s and out’s of organizing a SQL Saturday and family while enjoying a sumptuous dinner. I had prime rib – but it was a tough decision.

After eating, I touched base with a number my SQL Family – so many I usually only see at Summit. It had been a very long day. Although the party moved on to parts untold here – I opted to go straight to the hotel. I still had to pull together last minute stuff for my presentation.

The next morning, I arrived a little late, checked in and decided to check out the sponsors. Some were old friends and a few new friends before it was over. As a SQL Saturday organizer – sponsors are very important to cultivate. They are the backbone of the event. So I make sure they know I appreciate the efforts they are making. Atlanta had a wonderful setup for the sponsors – they had 2 rooms with snacks to draw the traffic and room to move around. Have I yet said I was envious of their venue? For the record, I would love to have one like it here in Tampa. I got tied up meeting with sponsors and new faces that went with well-known names so I ended up missing the second session. But it was such great SQL family going on I was OK with that.

I had lunch with some friends and got everything I needed together so I was ready for the next presentation and then mine. I sat in on Andy Leonard’s ( Twitter ) session on SSIS Framework. He blows me away with his ability to make it seem simple while all the time showing humility. He is one in my SQL family that I really look up to – there are few that I really admire. Thanks Andy for setting a wonderful example.

Then it was time for my session. It had been discussed earlier that this was the dreaded time slot. Everyone was settling into a stupor with lunch hitting bottom and the previous All Star time slot finishing up. I had prepared. I had even presented the session twice before. Both times I felt good after the presentation was over. But this time nothing flowed easily. The timing seemed awkward. The material was presented – I got a number of thanks afterward. Several who had seemed bored in the session actually let me know the parts that were aha moments for them. It might have been that I was so tired – whatever it was – I was glad it was over when it was over. I am going to have to spend some real time with this session to make it more comfortable.

Moving on – I was glad to attend Jessica Moss’ presentation on Report Parts. I learned a lot. I have not done any Report Builder. But it is something I need to get familiar with so it is an option I can offer my clients. I am impressed with Jessica. We both took a class on presenting way back when – prior to SQL Saturday #1. I have watched her grow and far exceed any level I aspire to achieve. She engaged the room and knew her material inside out. It was a pleasure to attend her session.

That was the last session so we all moved outside. The sponsors pulled raffle tickets. Many of us were very thrilled to see so many volunteer shirts running up to claim prizes. They deserve more than most to take something tangible home from the event.

We moved to the after event. I was pleasantly surprised at the number of people that showed at the after party. In thinking back – the die-hard partiers were those that had to head back to the hotels. I think Aaron was the only local to hang out to the next location – what a trooper?

In all it was a wonderful day. I learned a lot. I met many new people – some I have followed or seen on Twitter – while others were brand new to me. I got to connect with cherished friends and SQL Family I usually don’t see outside of Summit.

A special thanks to Audrey Hammonds ( Twitter ) for heading up the organization of SQL Saturday 111 as well as the entire team of people who worked to make this happen. Thank you one and all.

 

April 11, 2012

Monster Reports – Part III – Disparate Controls

Filed under: Presentations,SSRS — sqlpam @ 8:29 pm

This – as the name states – is Part III in a series on My New Presentation – Taking the Scary out of Monster Reports. Previously, we discussed that there are 2 types of monster reports: Disparate Data and Disparate Controls. This article will discuss Disparate Control reports, some of their challenges and some ways to get around them.

With this type of report, I usually start by defining the components that will go on the report. If the user has supplied a detailed version of what they want I know how to proceed. If not, I need to ask myself and sometimes the user, some of the following questions:

Is the report portrait or landscape?

  • Will I need more than one page for the report?
  • How many columns are needed across a page?
  • Can the different components be sized close to the same width? There might be different column widths on a page allowing you to group the components into the columns by width.
  • Do the different components have a relatively fixed height or will they grow with data? Top X reports are relatively fixed – as are set aggregates. A list based on parameters may grow beyond your page.

You may need to work with the user to come up with a clean design. Knowing the column widths up front is critical for a clean report before you start the next step of building the individual components.

I do recommend building the different components individually. This does three things:

  1. It allows me to work in a more controlled environment without worrying about messing up something else.
  2. It adds to the catalog of reports I can offer my users.
  3. It builds a “library” of reports I can pull onto my Monster reports.

Item one is really big on my list. It really pains me when I have a report close and then mess it up by adding something that doesn’t work. By breaking them out individually, I get the luxury of a clean sand box. I know that what I am attempting is possible. Remember that some things are easier to accomplish than others. This is where we find that out.

Item two tends to be high on my clients list. In addition to the Monster report, my user often wants to be able to print the individual components. I will often place these in a subfolder and adjust the parameter settings to enhance the user experience. If I am implementing the reports on the Monster report as sub reports, these are not the deployments I access. Those are usually deployed so they are not visible to the average user. This allows the user to share a small portion of the Monster report without exposing everything. It is a nice bonus for them.

Item three is my primary reason for breaking these out into individual reports. Basically, I am creating the Lego blocks I will be using to build my report. If I need a red block – I can easily grab it and implement. It has my data sets and layouts to make my life so much easier. Most importantly – I now know they actually work.

Now that I know what components I need, I need to determine how I am going to fit them together. I have used two methods primarily. Sub reports called from a table on the Monster report or including everything on the base layout.

A table holding sub reports is usually the easiest method. There are two things to consider. If the heights of the controls are not consistent there will be gaps when one control takes up more vertical space than the other controls on a row. Remember that SSRS does not allow you the luxury of spanning rows. But let’s assume that all your components are the same size. We need to handle the parameters. When calling sub reports, the parameters are expected to come from the table’s defined dataset. In our case, we need to create a data set that defines our parameters as the columns of the main grids data set. Now we set for a fast build. I usually define one sub report and copy it to the other cells. I then make changes based on the component’s parameter needs. This makes pulling it together very fast and very easy. It just needed a little prep.

The other method is a little more solid – less exposed blank space. I start by adding each individual dataset on the report. If I am reusing a component with different parameters – I need a multiple datasets. At this point I move to the layout where I can start dropping copies of the original components onto the report.

If I drop the components directly onto the base layout, I will encounter the same blank space issue as I had with the table. However, if I place rectangles on the base report and drop a copy of the component into the rectangle I have fewer issues with blank space. The rectangles allow each “column” to grow vertically independent of the contents of the other rectangles. The rectangles can also help set the page breaks if needed.

Don’t get me wrong, Monster reports are seldom simple. By with previously outlined steps, I hope you find them less “Scary”.

You find the files associated with this preasentation at: http://sdrv.ms/II1Lcn.

April 1, 2012

Monster Reports – Part II – Disparate Data

Filed under: Presentations,SSRS — sqlpam @ 2:23 pm

This – as the name states – is Part II in a series on My New Presentation – Taking the Scary out of Monster Reports.  We discussed that there are 2 types of monster report Disparate Data and Disparate Controls.  This article will discuss Disparate Data reports, some of their challenges and some ways to get around them.

When I get a request for one of these reports, I envision someone sitting there with stacks of reports, a pair of scissors and lots of tape.  More likely – it was tons of Excel spreadsheets and utilization of the cut and paste options – but the effect is the same – they took the totals from a lot of reports and smashed them together into a single report.  I can understand why they want them – but the expectations that that these smash up reports will run as fast as one of the original reports and not tax the system in the least that usually gets to me.

So let’s state the obvious – in a perfect word – the data for these reports would all come from cubes and we would be able to easily pull this data using MDX.  That world does exist for the rare few – but not for most of us – so we get over it and roll up our sleeves.

The trouble here is that now we have to run the queries that created each of those spreadsheets we saw earlier.  If we are lucky – we have the resulting spreadsheet to work from.  It holds the clue to how our report will work.  If not, it might save some time to build that spreadsheet – not really the data – but the layout.  It will tell us what groupings we need, the row layout for each grouping, as well as the formatting of each line.

So for disparate data reports – it is all about the data – more than anything else.  So we need a- for the most part – a single stored procedure to return all the data for the main grid on the report.  I usually have to play with how this will happen at each client’s site – because everyone’s data is different.  If the data is not massive – CTE’s may be the best solution available, other might need table variables or even temp tables.  The old standby – “it depends” is very much in play here.  But need is the same – accumulate the data into a single query-able source.

It never fails – I get everything into the ONE SOURCE when the client comes back to me and says – I have a few minor changes; “I need to change the order on some of this and add the following…”.  Let’s just plan on this happening up front – because it will.  Let’s add a “control table” to the mix.  This is a table that contains data about the different report data that will be displayed on the report and the attributes of each of these data areas.  This is my blue print to the report and it is usually a work in process thru out the life of the report.

For my demo, to promote self-containment – my control table is actually a CTE.  I find a table infinitely easier to work with – but the demo has other needs.  The control table will serve a multitude of purposes.  It will control the order of the data being displayed, the format it is displayed into and as documentation for anyone coming behind me on the report.

In the monster stored procedure, for each queried bit of data, I include a short description of the data being collected.  This is in verbiage – because it is easier to relate than numbers – but again – I keep it short.  This is going to be my link between the stored procedure data and the control table.  I will have a more verbose description that gets displayed to the end user – that can be easily changed on a whim.  I will have a number that represents the order that the data is displayed.  From here the sky is the limit – anything I need to track can be included here.  My format is usually a must, but I often include source data information and tool tips.  Note that multiple fields may be required for tool tips if they are verbose because tool tips do not wrap.

The final SELECT statement in the monster stored procedure joins the collected data to the control table and imposes order while adding the elements need for the report.

In the report itself, the source data set will be based on our monster stored procedure.  We will add the groupings with headers and footers as needed.  We may need multiple detail/header/footer rows to accommodate the multiple layouts involved.  The control table will provide the key as to which will be visible for each row displayed.  A critical note – if this is being exported to Excel prior to 2008 R2 – the multiple layout rows need to be kept to a minimum as each row is visible in the Excel export.  The control table can also provide the extras such as tool tip verbiage.

So for me – the control table is a must have when dealing with disparate data reports.

The next in the series will be dealing with Disparate Controls.

March 30, 2012

Proud Momma

Filed under: Personal thoughts — sqlpam @ 1:14 am

Today was a rough day and very strange – full of lots of twists. I did not get more than a couple of hours sleep last night while staying at my mother’s house. No reason I could put my finger on – sleep was just elusive. So the morning was not welcome. I was at Mom’s to drive her to a dental appointment where she was to have some oral surgery. I live 2 hours away and somehow – I am the only one able to reliably drive her to these things. Her friends her age scare her – so she looks elsewhere – which means me. I am grateful to have my Mom. I lost Dad back in ’94 – so I smile and thank the Lord I have her in my life.

We ate, got ready and drive over almost an hour’s drive. I hoped I might sleep in the foyer while she had her procedure – but no – everyone in the room had out their phones and were doing something – all with touch noise confirmations going. So there were clicks from one of the phones, dings from another and some strange hiss from the third. In the meantime my stomach was telling me it was not happy with the recent drug overdoses of antibiotics for the ear/nose/throat infection I was trying to get over.

They all got quiet and I fell asleep only to be wakened by the dentist himself. He introduced himself and I expected an update on my mother’s surgery. She was fine but this was a different visit – he wanted to tell me how much my mother reminded him of his mother who he lost in 2001. He brought photos and shared how he felt closer to Mom than most of his patients due the resemblance. I let him know that I knew I was lucky to have her and thanked him for taking special care of Mom. I later found he told the staff I was his “other” sister. Strange encounter – but not unwelcome.

When Mom was at checkout – I found my stomach was not going to stay quiet and ended up sick in the ladies room. I did feel better afterward in some ways – but very empty. Things were not settled enough to feel comfortable eating enough to feel the void.

After several stops on the way home – I crashed. I really needed to get home to my family. Today was my son’s Ryan’s 16th birthday. A big milestone for a youth and I was missing it. If I attempted to drive home at this point – I would never make it – not how I wanted him thinking of his Sweet 16. So I laid down and took a nap after calling and letting everyone know where I was. That call let me know that my loving husband now had the ear/nose/throat infection I was trying to kick and he was not happy about it.

I slept and was woke up by Mom’s new cat – Boots. I got things packed and loaded into the car and headed home. I got home around 8:45 and loaded my son in the car for his birthday dinner – better late than never. He chose Macaroni Grill – the same place for the last 3-4 years. Over dinner I got a question that made me warm and proud. “Mom can you teach me SQL so I can better track the data for my Yugioh cards?” My kid has been paying attention. He saw me prepping for my recent presentation “Taking the scary out of Monster Reports” and liked what I was able to do with the data. Now he wants to do the same types of things.

All the crappy parts of the day disappeared. It was getting played forward to me. He watched me take care of my Mom – always telling him that I have to take care of her while I have her. He was now saying he wanted more time – close time with me. So I gave him a run down of SQL over pasta. We’ll see how serious he is – but it stills feels wonderful knowing he has an interest.

 

March 22, 2012

A New Presentation – Monster Reports – Part I

Filed under: Presentations,SSRS — sqlpam @ 10:35 pm

Taking the Scary out of Monster Reports – this is the title for my latest presentation. For the past 4-5 years I have had one presentation on reporting services – Tips and Tricks of Reporting Services that has been presented at least 15 times. It discusses the joys of the dynamic features in SSRS that allow you to modify the report’s appearance and behavior by using data. But it was getting old – way old and it was time for another main line presentation. I must note – this was not the only presentation over that time frame – just the most well received.

I write reports for my clients. Recently, I saw a trend to more complicated reports or what I refer to as “Monster Reports”. I tend to cringe when I see these. They are very important reports to management. They usually mean that instead of digging to the bottom line of a number of reports – they have one report that encapsulates what they need to see.

I have noticed two directions for these reports. One has a lot of disparate data on the report while the other has a lot of disparate controls on the report.

The disparate data report is usually a report that combines the subtotal/total lines from a number of reports. A lot of time they look at fixed period(s) in time to display associated totals. But sometimes they get even more complicated by spinning in different columns within the multiple subtotal or they request charts to visualize one or two of the result sets. These can be a beast to create and maintain.

The disparate controls report has a similar challenge in that you are pulling back very disparate data – but the presentation is what differs so much with this one. You are attempting to wedge multiple charts, grids and potentially gauges on a single page – possibly more. They want is packed tight with few gaps. But they want it nice looking.

So the point of the presentation is to supply the attendees with a number of strategies to help make these “Monster” reports less “Scary” to tackle. So I will be posting a series of blogs over the next or so to go into a little more depth than the typical hour presentation will allow. My carrot to the attendees is that at the end of the presentation – they will have access to a series of RDLs that will allow them to start to monitor their Reporting Server Database. The idea for the topic was inspired by Jessica Moss (Blog | Twitter) who dids a presentation at PASS Summit 2011 entitled: Preventing the Oh, Poop! Reporting Situation. I liked that at the end of the presentation the attendee actually had something useful. So I built on what she supplied.

The next blog will be on the Disparate Data reports and the techniques I employ the tame them.

A renewed experience

Filed under: Community — sqlpam @ 6:31 am

Last night I did something I have not done in a long while – I visited a SQL User Group other than one of my local groups. You tend to forget how different we are until you step outside your box. Last night I drove the hour and a half from my place over to MagicPASS in Orlando. This is a SQL group run by Kendal Van Dyke (Blog | Twitter). I was a little surprised when I saw in the announcement that the meeting start at 5:00 pm with a video presentation. Driving over – I thought about it. Having a time when people can feel comfortable just dropping by – without feeling they were dissing a speaker – might get that bit of the group that I lose because they have an hour to kill between work and group. Arriving – I found that it was also a great opportunity to network / reconnect with those members as well.

Kendal amazes me with his depth of knowledge and more – his ability to always seem to remember names with faces. This is a major failing of mine. In his group, I saw he helped this out by having everyone wear a name tag – another note to consider for future meetings. As time came for the main presentation – Kendal started with the announcements. This was the time when everyone should be there – right? The announcements were lengthy – but full of very useful – relevant information. He started with the supplied PASS slide deck and worked from there. Additional information included new information on certification – along with the announcement of forming study groups. All great info. Somewhere in all of this the food arrived – nice and hot – delivered by his wife and children. By this time in my group – the speaker was half way thru the presentation if not really warmed up. We took time to eat and network – that critical piece – network. When everyone had their fill – I was asked if I was ready. Oh no – the panic set in. But these were friendly people – it won’t be an issue.

I got a wonderful intro by Kendal and explained that this was the debut of this presentation. I got a little more than half way thru my material and Kendal informed me that it was 8:45 pm. I almost freaked – how did the presentation get so long? I know there were lots of questions – which is good – but really – almost 9:00 pm? I had been in this room for almost 4 hours at this point – but it was a full 4 hours.  Lots of information exchanged and not all of it from me.  I wound down. We finished with raffles and distribution of shirts and lapel pins left over from my SQL Saturday. We rearranged the room and headed out to the local watering hole for even more networking.

I am not sure what of this I will incorporate back home – but I know my comfortable view of the home meeting has changed. It was great to meet some wonderful new people. I even joined a certification study group to assist me with one of my goals for the year. They will be held via live meeting – so the distance is not an issue it would be otherwise. I came away much richer than I arrived.

Thank you Kendal!

March 15, 2012

SQL Saturday #110

Filed under: SQL Saturday — sqlpam @ 8:20 pm

So we have another SQL Saturday Tampa on the books.  This was our fifth – our fourth at KForce who supplied facilities.  Based on the reviews – it was another success.

This year we had two last minute precons held on March 9th, 2012 at the Ybor City Hampton Inn.  One session was for the DBAs led by Eddie Wuerch (@eddiew) entitled The DBA Skills Upgrade Toolkit The other session was for our BI audience led by Bill Pearson (@Bill_Pearson) entitled Getting Started with PowerPivot and Other Microsoft  Business Intelligence Topics.  The events were opened to the public only a couple of weeks before the event – so an attendance of 34 was a pleasant surprize.

We had over 40 people attend our Pre-event dinner at Spaghetti Warehouse.  This was a good time by all.  It was a chance for our speakers, sponsors, and volunteers to get together and let their hair down before getting to work on Saturday.  This was the core of the people who helped make the event a great success.

The morning of March 10th, 2012 found us at KForce very early in the morning.  This year registration opened at 7:00am to allow for the elimination of one room that was not conducive to learning.  Instead of six time slots we had seven – so that meant a very early start.  Registration was a breeze for those that pre-printed the SpeedPasses supplied by the SQL Saturday site this year.  This did create some confusion.  Last year, since I was prototyping the process, each registrant got a SpeedPass delivered via email.  The common thread from those that did not print them was that never received the PDFs.  I need to do a better job of clarifying what the process is next year.  We also had issues with the SQL Saturday site’s SpeedPass process on the day of the event which created a few glitches for those that did not pre-print the SpeedPasses.  This is a work in process – so all information has been submitted to PASS.  The site continues to improve – so I see these wrinkles being resolved soon.

We had 42 scheduled sessions led by 40 speakers and 1 co-speaker.  We did end up with 2 no shows the day of the event.  One of these was filled by a speaker on site with a similar topic while the second was left unfilled.

We had 20 sponsors for the event with 11 on site.  We had three sponsors that were bloggers trying to get their names out there – my hope is they got the exposure they were hoping for.  We also had three Bronze,  five Silver, seven Gold and one Platinum.  Although this looks like a lot of sponsorship money, there was a lot of this that was in trade for needed materials for the event.  My hope is that each sponsor got what they hoped to get out of the event to encourage them to continue sponsoring SQL Saturdays in the future, not only Tampa – but all events.

We saw a marked decrease in registrations this year.  There were several reasons that I assumed caused this.  First, we changed the time frame we had our event.  In past years it has been held soon after the beginning of the year.  This posed challenges with sponsorship budgets – so this year we moved to March.  I received some emails stating that they planned on coming in Januray – but March was not possible.  The other factor is the number of SQL Saturdays that are occurring.  I think that that the sponsors, speakers and attendees are reaching a saturation point.

A big round of applause should go out to our volunteers.  They were the silent partners that made the event a great success.  I would like to give a special word of thanks to two of my volunteers.  Karla Landrum (@KarlaKay22) is now a PASS employee – but she went well above the call of duty to assist me with details that boggle the mind.  Brooke Ranne (@BabblingBrook01) managed the registration desk for me.  She has gotten it down to a science by volunteering at a number of the events in the south east.  On Friday night, the volunteer staff stuffed 300 event bags in less than an hour.  I have to say – my team kicked butt.  My warmest gratitude to each and everyone.

Lots of things went right – but besides registration glitches we had a few things that raised concerns from attendees.  I heard concerns about signage – we had more this year than ever before – I guess there will have to more next year.  There was also concerns raised that although the Guide Book was mentioned in a pre-event email – there was not enough information for attendees to know how to use it.  The cardinal sin of all was that we ran out of coffee.  Last year it was overkill so I backed off – looks like I need to gear it up a little more for next year.

Thank you to everyone who spoke, sponsored, volunterred or attended.  You each added to the community.  For those first timers – I hope to see you again in the future.  For those that came back after a previous attendance – thank you for continuing the cause – free training and the expansion of the SQL Family.

 

February 10, 2012

In SSRS, Long Tool Tips Don’t Auto-Magically Wrap

Filed under: SSRS — sqlpam @ 5:58 pm

So here is the issue: The user wants detailed information as to how data is derived.  There is no way to shortcut it – you have to get wordy.  So you store the verbiage in a VARCHAR(MAX) column and populate the tool tips using this. 

Works great!  There is the verbiage and off the screen it goes.  What?  It isn’t smart enough to wrap to stay on the screen – not really.  

So now what? 

Here’s what I did. 

I found the longest tool tip in the table and then broke it out into 100 character segments.  I created new fields for each needed segment and updated them in the table. 

But it was more than that – I broke it out based on breaks so that words were not chopped.  My solution was not elegant but here it is:

My original tool tip field was GrpToolTip.  I added GrpToolTip1, GrpToolTip2, GrpToolTip3, GrpToolTip4, and GrpToolTip5 – all VARCHAR(100).

I look for the original Tool Tip to be greater than 100.  I determine the location of the first space after 80 to allow for longer non-breaking text and pull the left most characters based on the results.

If the original Tool Tip was less than 100 characters – I replace the new appropriate new Tool Tip with the original.

Next I update the original Tool Tip to remove the data moved to the new tool tip.

Then repeat the process thru all the new fields.

UPDATE rptReportTemplate
SET GrpToolTip1 = LEFT(GrpToolTip, charindex(‘ ‘, GrpToolTip, 80))
WHERE LEN(GrpToolTip) > 100

UPDATE rptReportTemplate
SET GrpToolTip1 = GrpToolTip
WHERE LEN(GrpToolTip) <= 100

UPDATE rptReportTemplate
SET GrpToolTip = REPLACE(GrpToolTip, GrpToolTip1, ”) 

UPDATE rptReportTemplate
SET GrpToolTip2 = LEFT(GrpToolTip, charindex(‘ ‘, GrpToolTip, 80))
WHERE LEN(GrpToolTip) > 100

UPDATE rptReportTemplate
SET GrpToolTip2 = GrpToolTip
WHERE LEN(GrpToolTip) <= 100

UPDATE rptReportTemplate
SET GrpToolTip = REPLACE(GrpToolTip, GrpToolTip2, ”) 

UPDATE rptReportTemplate
SET GrpToolTip3 = LEFT(GrpToolTip, charindex(‘ ‘, GrpToolTip, 80))
WHERE LEN(GrpToolTip) > 100 

UPDATE rptReportTemplate
SET GrpToolTip3 = GrpToolTip
WHERE LEN(GrpToolTip) <= 100

UPDATE rptReportTemplate
SET GrpToolTip = REPLACE(GrpToolTip, GrpToolTip3, ”)

You get the picture…

Now that I have all the data segmented into the proper lengths, I update the stored proc that feed the report to include the new segmented fields instead of the original field.  I need to refresh the report’s dataset so it sees the new fields. 

The next step is what all this was about.  Where the tool tips were displayed, instead of just setting the tool tip to the original tool tip field – I utilize an expression to force the next line down.  Here is the expression: 

=IIF(LEN(Fields!GrpToolTip1.Value)>0,Fields!GrpToolTip1.Value,”") +
          IIF(LEN(Fields!GrpToolTip2.Value)>0,CHR(10) + LTRIM(Fields!GrpToolTip2.Value),”") +
          IIF(LEN(Fields!GrpToolTip3.Value)>0,CHR(10) + LTRIM(Fields!GrpToolTip3.Value),”") +
          IIF(LEN(Fields!GrpToolTip4.Value)>0,CHR(10) + LTRIM(Fields!GrpToolTip4.Value),”") +
          IIF(LEN(Fields!GrpToolTip5.Value)>0,CHR(10) + LTRIM(Fields!GrpToolTip5.Value),”")

Note that I only include the CHR(10) when the segment is populated and I also strip off leading spaces for an even left edge.  That could have been accomplished with the above code with a little more effort – but it works here. 

Not rocket science – but hopefully it will save a few steps for someone in the future.

Next Page »

Theme: Rubric. Blog at WordPress.com.

Follow

Get every new post delivered to your Inbox.

Join 831 other followers