• Conditional text in Excel when a cell has a value

    This might seem trivial to us ‘developer’ types, but it was today’s “Jane’s Excel question”.

    You have one or more cells in a spread sheet. You want to display some text “Y” or “N” depending on whether the cell has anything in it. eg.

    image

    One solution is to use this formula:

    =IF(LEN(B3)>0, "Y", "N")

    This checks the length of the text in the cell. An empty cell will have a length of zero. Anything greater than zero means the cell has something in it.

  • Supporting IE6, 7, 8 (and maybe 9) on the same machine

    It’s nice to live on the cutting edge – using the latest version of everything, especially web browsers. But sometimes you may have to support users running older versions, and it is a lot easier to support a user if you can be using the same software that they have in front of them.

    The problem is that you can normally only have one version of IE installed in Windows.

    IT Tester screengrabRoger showed me IE Tester which looks quite impressive. It works by hosting separate version-specific instances of the IE rendering engine. Probably a good option if you’re a web developer.

    Expression Web SuperPreview screengrabIf you have access to Microsoft’s Expression Web, then Expression Web SuperPreview offers similar functionality. Another option is to utilise the free virtual machines provided by Microsoft. These are complete standalone copies of Windows XP and Vista with versions of IE6, 7 and 8. To run these, you need either Virtual PC 2007, Windows Virtual PC (Windows 7 Pro or Ultimate only) or Hyper-V.

    Virtual PC 2007 with desktop shortcut screengrabIf you’re using Virtual PC 2007, one nice thing you can do is add a desktop shortcut to the VMs so they can be launched easily:

    1. Create a new shortcut on the desktop
    2. Point it at “C:\Program Files\Microsoft Virtual PC\Virtual PC.exe”
    3. Give it a useful name – eg. “IE6 on XPSP3”
    4. Edit the shortcut target and append -pc “VM Name” –launch
    5. Replace “VM Name” with the exact name of the appropriate virtual machine (Include the double-quotes if the name has spaces in it)
    6. Change the shortcut icon to point to one from “C:\Program Files\Internet Explorer\iexplore.exe”

    Ryan Adams has posted a comprehensive list of all the available command-line options.

    One thing to note – the VMs do have an expiry date. Updated VMs are usually made available before then though.

  • Error CS1061 upgrading to ASP.NET MVC3 Preview 1

    I just encountered a problem upgrading a client’s website from ASP.NET MVC2 to the preview of MVC3:

    Compiler Error Message: CS1061: ‘object’ does not contain a definition for ‘StartDate’ and no extension method ‘StartDate’ accepting a first argument of type ‘object’ could be found (are you missing a using directive or an assembly reference?)

    This error happens at runtime when I go to view a particular View in the browser. The view’s Model property was not being typed as my custom type and instead was reverting to the default type of System.Object.

    Turns out it’s a known bug that is caused by the fact that the particular view’s .aspx page also has a <% Import %> directive after the <% Page %> directive.

    The workaround (until the next preview is released) is to swap the two lines around, so that the <% Page %> is the last directive in the file. eg.

    <%@ Import Namespace="Client.Models" %>
    <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Client.Models.CustomViewModel>" %>