James,
Move your code out of the click of the column and put it in the afterrowcolchange of the grid. The click is firing before the record pointer has been moved by the grid so you get the current value for the control whose click the code resides in and the previous values for the other fields.
Using the afterrowcolchange will delay the firing of your code until after the record pointer has been moved. You can check the grid's ActiveColumn property to see which column was clicked on.