I'd prefer not to maintain multiple copies of the same report, so I do it in code. Don't think of it as changing the index number, think of it as changing the field in each index number. Here's an example, though only with one level:
Code:
Private Sub Report_Open(Cancel As Integer)
If Forms!frmShiftData.chkSummary = True Then
Me.Detail.Visible = False
End If
Select Case Forms!frmShiftData.fraGroupBy
Case 1 'group on dates
Me.GroupLevel(0).ControlSource = "Enter_Date"
Me.txtGroupHeader.ControlSource = "Enter_Date"
Me.txtDetail.ControlSource = "Shift"
Me.lblGroupLabel.Caption = "DOR Date"
Me.lblDetailLabel.Caption = "Shift"
Case 2 'group on shifts
Me.GroupLevel(0).ControlSource = "Shift"
Me.txtGroupHeader.ControlSource = "Shift"
Me.txtDetail.ControlSource = "Enter_Date"
Me.lblGroupLabel.Caption = "Shift"
Me.lblDetailLabel.Caption = "DOR Date"
End Select
End Sub