Well, I wish you would have said that at first (Using a Grid)
Because you are using a DataGrid, when you click on a record in the grid, it will retreive all the data for the record (all that is possible)
As you know, a repeated call with GetChunk when all the data has all ready been retrieved produces NULL. And this is what you are doing because the grid has already used it.
You can see this if you do not move to a different record by clicking on the grid, but do so by just calling the MoveNext/MovePrevious. Then the GetChunk works - of course.
You should be adding a vbNullString to the data when assigning it to a string variable anyways:
StrBlob = rsMain!UdrGridLayout.GetChunk(BlkSize) & vbNullString
Also, you shouldn't be adding this field to the grid, if it is large, but create a second rs using a server side cursor, for retrieving this data.