I am working on a database for work. Someone else designed this database long ago, I have just been bastardizing it. Basically everything that is printed from the database is first populated into a form. This is a little odd to me since I would normallly use a report for this function, but I'd rather not change if I don't have to.

Anyway, I wanted to put in some code to change a few fields dynamically based on certain criteria. When I open the form and scroll through the records, it works as desired. When I do a printout, it takes the rules for the first record and applies that to all records. The code is in the form's On Current.

Does anyone know what I can do to correct this? I think a report would solve it but I'd rather not build a report if I don't have to; there are a LOT of controls on this form.

Here is the code behind the printout button:
Code:
Private Sub Label61_Click()
If Me.NameCombo = "All" Then
    DoCmd.OpenForm "frm_Picker"
    DoCmd.PrintOut
    DoCmd.Close acForm, "frm_Picker"
Else
    DoCmd.OpenForm "frm_PickerOnly"
    DoCmd.PrintOut
    DoCmd.Close acForm, "frm_PickerOnly"
End If
End Sub
Here is the code behind the form that is printed out:
Code:
Private Sub Form_Current()

If [ReasonCode] = "028" Then
    Me.CodeDesc = "Label Swap"
Else
    If Me.OrderReasonDescription = "Wrong shipment ret" Then
        GoTo mispick_handling
    Else
        GoTo no_mispick1
    End If
End If
Exit Sub

no_mispick1:
If Me.OrderReasonDescription = "Wrong shipment keep" Then
    GoTo mispick_handling
Else
    GoTo no_mispick2
End If
Exit Sub

no_mispick2:
If Me.OrderReasonDescription = "Wrong shipm.unknown" Then
    GoTo mispick_handling
Else
    GoTo no_mispick3
End If
Exit Sub

no_mispick3:
Me.Text65 = [MaterialReceivedLocation]
If Me.OrderReasonDescription = "Shipped overage rtrn" Then
    GoTo overage_handling
Else
    GoTo no_overage1
End If
Exit Sub

no_overage1:
If Me.OrderReasonDescription = "shipped overage keep" Then
    GoTo overage_handling
Else
    GoTo no_overage2
End If
Exit Sub

no_overage2:
If Me.OrderReasonDescription = "Short shipment" Then
    GoTo short_handling
Else
    GoTo no_short
End If
Exit Sub

no_short:
If Me.OrderReasonDescription = "Damaged" Then
    GoTo damage_handling
Else
    GoTo No_Exceptions
End If
Exit Sub


mispick_handling:
If Me.PartNumberReceived = "00005555555" Then
    Me.Text65 = "Unknown"
    Me.CodeDesc = "Picked Unknown Material"
    Exit Sub
Else
    Me.Text65 = [MaterialReceivedLocation]
    If Me.MaterialOrderLocation = [MaterialReceivedLocation] Then
        Me.CodeDesc = "Mixed Bin - Picker Did Not Check Part"
        Exit Sub
    Else
        If Me.MaterialOrderLocation <> [MaterialReceivedLocation] Then
            Me.CodeDesc = "Picker Picked From Wrong Bin - Did Not Check Part Number"
            Exit Sub
        Else
            If [MaterialOrderLocation] = "R010101" Then
                Me.CodeDesc = "Mixed Bin - Picker Did Not Check Part"
                Exit Sub
            Else
                GoTo No_Exceptions
            End If
        End If
    End If
End If
Exit Sub

overage_handling:
GoTo No_Exceptions
Exit Sub

damage_handling:
GoTo No_Exceptions
Exit Sub

short_handling:
If [QuantityOrdered] > [QuantityAppr] Then
    Me.CodeDesc = "Partial Shortage - Counting Error"
Else
    If [PickingStrategy] = "MCP" Then
        Me.CodeDesc = "Picker Placed Part In Wrong MCP Box / Tote"
        Exit Sub
    Else
        If [PickingStrategy] = "2SP" Then
            Me.CodeDesc = "Packer 2 Step Sorting Error = Part Misdirected"
            Exit Sub
        Else
            If [PickingStrategy] = "1SP" Then
                Me.CodeDesc = "One Step Pick - Complete Shortage"
                Exit Sub
            Else
                GoTo No_Exceptions
            End If
        End If
    End If
End If
Exit Sub

No_Exceptions:
Me.CodeDesc = [Description]
Exit Sub

End Sub