After I requery the recordset the grid does not reflect any changes in the row count, it even crashes sometimes.
This can happen when you call CRecordset::Requery() directly.
It is very important that you have to call Requery()for the grid and not for the recordset.
Example:
void CMyRecordView::OnRecordRequery()
{
BOOL bLock = LockUpdate();
SetTopRow(1);
MoveCurrentCellEx(GX_TOPLEFT);
Requery();
LockUpdate(bLock);
Redraw();
}