David,
>for nRow = 1 to reccount
> activatecell(nRow, 1)
> cmdButton.caption = cursor.invoice
>endfor
>...doesn't work.
There aren't a true N objects for a grid, there is only one object for the column and it is painted on all other rows. The Column.Sparse property controls this.
>If only there was a true dynamiccaption property.
That is'nt going to help you though, a command button can't be that dynamic inside a grid.
Might I suggest you use a plain textbox and format it to look like a clickable link with color and/or underlining. It's my experience that endusers grasp this UI pretty easily in this browser permeated world.