web-dev-qa-db-fra.com

Vérifier le champ du formulaire d'accès pour la valeur Null, sinon Null, puis appeler la fonctionnalité Ajouter.

J'ai ce simple formulaire d'accès qui, lorsque vous remplissez le formulaire et oubliez de renseigner le champ Unité, une boîte de dialogue apparaîtra pour vous en informer et définissez Focus sur cette zone très combinée. Si ce n'est pas null, je veux appeler la fonctionnalité suivante. La première partie de ce code fonctionne, mais si ce n'est pas le cas, il ne peut pas continuer.

 Private Sub Image_AddNon_RPS_Button_Click()

 If IsNull(Me.BU_Selected_Add) Then
    MsgBox "Please Select a Business Unit!", vbOKOnly
            Exit Sub
         End If
    Me.Combo_BU_Selector.SetFocus
    Exit Sub
If Not IsNull(Me.BU_Selected_Add) Then
    Call Add_RPS_LINE
        End If
End Sub

Est-ce que quelqu'un voit où je suis totalement dans le champ gauche?

3
T-Rex

Vous avez un Exit Sub supplémentaire (celui après la première MsgBox) qui empêche votre code de faire ce que vous voulez. De plus, votre premier End If est au mauvais endroit.

Essayez quelque chose comme ceci à la place:

Private Sub Image_AddNon_RPS_Button_Click()

  If IsNull(Me.BU_Selected_Add) Then                     ' No business unit 
      MsgBox "Please Select a Business Unit!", vbOKOnly  ' Tell user 
      Me.Combo_BU_Selector.SetFocus                      ' Focus the control
      Exit Sub                                           ' Exit the method
  End If                                                 ' End the IsNull test

  Call Add_RPS_LINE      ' You only get here if the above doesn't execute
End Sub

Il est utile d’apprendre à mettre correctement en retrait votre code afin qu’il corresponde If et End If visuellement, de sorte que vous puissiez voir où ils se rangent et où ils ne le font pas. :-)

6
Ken White

Si vous corrigez l'indentation de votre code pour:

Private Sub Image_AddNon_RPS_Button_Click()
   If IsNull(Me.BU_Selected_Add) Then
      MsgBox "Please Select a Business Unit!", vbOKOnly
      Exit Sub
   End If
   Me.Combo_BU_Selector.SetFocus
   Exit Sub
   If Not IsNull(Me.BU_Selected_Add) Then
      Call Add_RPS_LINE
   End If
End Sub

Vous pouvez clairement voir que le Exit Sub au milieu mettra fin à la fonction avant qu'elle atteigne Call Add_RPS_LINE.

Si vous examinez les deux instructions If que vous avez, vous pouvez constater qu’elles sont presque identiques et qu’un Else est donc en ordre, ce qui permet d’obtenir ce code plus simple et plus lisible.

Private Sub Image_AddNon_RPS_Button_Click()
   If IsNull(Me.BU_Selected_Add) Then
      MsgBox "Please Select a Business Unit!", vbOKOnly
      Me.Combo_BU_Selector.SetFocus
   Else
      Call Add_RPS_LINE
   End If
End Sub
0
undeadherbs