-
Flashback
I think I overloaded one of my lobes somehow during the past few days while attending the Microsoft Convergence 2006 conference.
I was pulling a Shiner Bock beer out of the fridge and just for the second, out of the corner of my eye, I saw a Miller Lite label.
It scared the crap out of me and I almost threw the bottle through my back door. One of them auto-nome-ic reaction things.
Luckily, that vision passed and all was well with the world.
Oh yeah, I guess I had better get to the Flashback part. I used to drink Miller Lite. In a bottle. Only.
But I was young and uneducated and it was not my fault. So you'll need to forgive me.
Meanderings 1,292 views -
Convergence 2006: Day 3
The CRM sessions were indeed better today and BillG even showed up to rally the troups, etc.
Tomorrow is the close so we'll have to see how many people I can meet and greet and try and fit in whatever sessions are available vs. prior customer commitments.
Misc 1,454 views -
Creating an Address Block Without Blank Lines in a CRM 3.0 Report
When you are creating a CRM report involving an address block, you will need to take into account the fact that most of the time, the additional address lines will be blank. Since it is generally bad form to have extra blank lines in your address block, we need a way of only adding those fields with data. Take a look at the following, pretty normal address block layout with examples:
Address Block Layout:
Customer Name
Address Line 1
Address Line 2
City, State ZipcodeExample 1:
Bob Smith
123 South Center Street
Apt. 3A
Dallas, TX 00111Example 2:
Bob Smith
123 South Center Street, Apt 3ADallas, TX 00111
Notice how the second example's Address Line 2 is blank, and therefore we have that ugly blank line in the middle of our address? Well, I don't know about you, but most of my customers ( and me ) find this unacceptable and want the extra blank line removed.
To accomplish this, we will use the Visual Basic IIF function. This function performs a test that you specify and returns one value if true, and another value if false.
So, here is how we would create the expression to populate a text box within a SQL Reporting Services report that will contain our customer's mailing address:
=Fields!name.Value & vbCRLF &
Fields!address1_line1.Value & vbCRLF &
IIF(IsNothing(Fields!address1_line2.Value), "", Fields!address1_line2.Value & vbCRLF) &
Fields!address1_city.Value & ", " &
Fields!address1_postalcode.Value & " " &
Fields!address1_stateorprovince.ValueLet's break down some of the more special features of this calculation:
- vbCRLF is the Visual Basic pre-defined constant that contains the values of a carriage return and a line feed – what is sometimes called a "New Line" character.
- IsNothing is a Visual Basic function that returns TRUE if the variable being tested is blank.
- The & sign is used to concatenate two strings.
The pseudo code for the IIF statement looks like this:
- Check to see if the address1_line2.Value Field is blank.
- If it is blank, return a blank ( "" ).
- If it is not blank, return the address1_line2.Value Field with a carriage return, line feed character appended to it.
Note: You will need to substitute the field names found in your report for the ones listed in the expression.
References:
Visual Basic Language Reference: IIf Function.
Dynamics CRM, Reporting 3,577 views -
AJAX, Atlas and General ASP.NET 2.0 Development
I have been in the computer business since 1984 and I think that I can say, with complete honesty, that I am having as much fun right now, as I did way back then, when everything was new and constantly changing ( oh wait, that's every day for geeks like us ).
Anyway, I've only been working with .NET development about a year and I've still got a ton of stuff to learn, but what I am seeing is a maturation of tools and technologies that allow developers and architects to focus on the solution, not on making your tools do what you want them to do.
Case in point: AJAX and the Atlas.
Now I don't know a whole lot about this topic because I've been buried in Sharepoint and MSCRM development, but from what I have been reading lately, there is a ton of genuine functionality behind the hype. And this functionality is going to enable us to enhance the user experience of our web sites to the point that the users will see very little difference in operating a web app vs. a Windows app.
And I don't know about you, but I find that pretty darn exciting. ( I actually find it more exciting than that, but I have to keep this blog mostly "G-Rated" )
One of my fellow Sharepoint bloggers had a short post last week regarding the Atlas AJAX library. If you are interesting in enhancing your web-based applications, I would advise you to keep reading and review the information found at the various links in Mark's article.
From Mark Harrison's blog:
The latest bits of Atlas (the March Community Technology Preview) are now available to download.
Atlas is a free framework that uses AJAX techniques for building a new generation of richer, more interactive, highly personalized standards based Web applications. If you have not seen it before, take a 15 minutes out to watch Scott Guthrie create a simple Web application with ASP.NET 2.0 and then add Atlas capabilities to it.
I took Mark's advice and watched Scott's "movie." I was astounded. First of all, adding AJAX support to an ASP.NET 2.0 application using the Atlas toolkit is nothing more than adding a few controls to your pages and POOF, you're an AJAX site.
In my line of work, we call that PRETTY FREAKING COOL.
Secondly, and I don't if Scott was the one typing during the demo, but I can tell right now that my knowledge of how the code editor works in VS2005 would fit under the nail of Scott's little finger. I'm going to have to go back and watch it again just to see if I can figure out how he did some of those editing tricks.
Well, that's my two-cents worth for the day. If you develop anything cool with .NET and Atlas, drop me a line or post a comment so I can see your work.
Development 1,522 views -
Dynamics CRM 3.0 SDK v 3.0.4 Released
A new version of the SDK was released last week. I mention it because they added some really cool examples that I think you should review. Here is a list of changes in the 3.0.4 release:
Description of changes MetadataDiagram Added project and solution files, removed duplicate entities, added excluded entities and relationships to the sample code. Business Logic Extensions (Callouts) Added documentation for PostDeliver and PreSend callouts. Callout Configuration Added improved sample code for determining which entity attributes can be used in a callout. Callout Configuration File Reference Added information to the topic on callout configuration. Customization File Reference Added detailed reference information about the schema of the import/export customization file. Field Types, Properties and Methods Bug fixes in documentation for String and Picklist types. Form Properties Added information about the various form types found in the SDK. IFrame Support Added information to the topic on IFrame support. ISV Guidelines Added a book that contains guidelines for people creating add-ons for Microsoft CRM. Microsoft CRM Entity Model Updated entity model diagrams throughout the entity model topics. Added Key to Entity Diagrams to explain color coding for new diagrams. Registry Settings Added registry keys used in the Hosted Microsoft Dynamics CRM 3.0 release. Report Writers Guide Added information on how to create context-sensitive reports. Sample Code Merged similar samples Using Dynamic Entities and CRUD Operations using Dynamic Entities.Updated the following samples: InstantiateTemplate
SendEmail
AddMembersTeam
Dynamics CRM 2,110 views -
Convergence 2006: Day 2
I only attended a couple of sessions today because I was jaw-jacking with MS folks, partners, and vendors. Overall, it was a great day at Convergence.
I also picked up a copy of Working with Microsoft Dynamics CRM 3.0 by Mike Snyder and Mim Steger of Sonoma Partners in Chicago.
It's a pretty good read and should be on every CRMer's bookshelf.
Tomorrow has some more content that interests me so it should be more fun. Plus, I think Patrick Lewis has a couple of sessions that I hope to drop by and heckle. :)
If you're at Convergence, drop me an email and we can meet up somewhere.
Misc 1,755 views -
It's not just me
That chick on godaddy.com IS hot.
Then I got to thinking, "I wonder if she can cook."
Which led me to my next thought: "Dumbass. Who cares if she can cook. You can cook."
Meanderings 1,276 views -
Convergence 2006: Partner Briefing and Day 1
During the Partner Briefing yesterday, MS discussed with us the newly released CRM Hosting extensions which allow ASPs to provide CRM 3.0 hosting services.
That feature should really open the door to CRM adoption because it allows the customer to try before they buy without having to invest in the infrastructure required to run CRM.
We were also given a ship time for CRM 3.0 Mobile of April ( 2006 ).
Other than that, there are plenty of vendors here and tons of MS folks to give demos and answer questions.
I've mostly been focusing on the Home Building vertical market with CRM 3.0 so I am attending presentations showing how other industries utilize CRM in their solution model.
It's always a good idea to collect as many different approaches as possible when developing solutions in case you run into a situation that requires you to think out of the box.
Misc 2,359 views -
.NET: Full Proof Method for Setting a Selected List Item
Well, I'm not sure it's exactly full proof, but it will keep you from making a stupid mistake in your application's functionality.
There are several ways to select a list item when you are loading a page or a form. The most common method is to just set the SelectedItem property to be the text that you would like to see defaulted into the dropdown or listbox, like so:
cboServerSchedule.SelectedItem = sMyString;
This works find and dandy as long as the value that you are assigning to SelectedItem exactly matches your variable or value. And when I say exactly, I mean just that: exactly.
I ran into a situation this week where it was possible for the user to edit, outside of the application, the value that I would be using to set SelectedItem of my DropDown. This would cause the application to basically set the default value for the DropDown. Since I had no control over what the user could do, and the setting the application was writing to the registry was case-sensitive, it presented me with a problem.
That was when I remembered that a very, very, long time ago, I had already solved this problem with just a couple of extra lines of code:
iFindStr = cboClientSchedule.FindString(sMyString);
if (iFindStr != -1)
cboClientSchedule.SelectedIndex = iFindStr;Using the FindString function for the DropDown, you are able to perform a case-insensitive search for a selected value. If the value is found within the Items collection, FindString returns that index; otherwise, it returns a -1.
I simply check the return value and if it's not -1, I assign the SelectedIndex ( instead of SelectedItem ) to that value. The final key to this solution was to set the items collection of my DropDown to be valid values for the application that would later be reading the value from the Registry.
Development 1,382 views -
Fighting fires, and such
I learned several important things this morning that I felt I should share with the world at large. Listed in no particular order:
- A $25 microwave doesn't understand that "Reheat" for a Cinnamon Roll means 20 seconds, not 20 minutes.
- Sugar burns.
- Burning sugar produces yellow smoke.
- I don't know if yellow sugar smoke is toxic, but it stinks like heck.
- You can't make smoke disappear by spraying "room freshener," so don't try. Imagine burnt sugar and a burning hospital, and you'll get a visual on the smell.
- The fire alarms on the 9th floor of a certain gold-plated building in North Dallas do not consider burning sugar to be a threat.
- The fire department will not show up unless a fire alarm goes off.
- Burning sugar smells.
Meanderings 1,364 views



