I have to disagree with you! While storing Calculated Fields is usually, quite rightfully, frowned upon, I think this case is one of the acceptable reasons! These three Listboxes have no intrinsic value, here, and are only being used to facilitate data entry. Storing three such Fields instead of a single Field just seems wasteful and unnecessary, to me.
I would, however, take into account the possibility that the users may not select from the Listboxes in the order the developer expects, and do something like this:
Code:
Private Sub LB1_AfterUpdate()
Call ConCatFields
End Sub
Private Sub LB3_AfterUpdate()
Call ConCatFields
End Sub
Private Sub LB2_AfterUpdate()
Call ConCatFields
End Sub
Private Sub ConCatFields()
If Nz(Me.LB1, "") <> "" And Nz(Me.LB2, "") <> "" And Nz(Me.LB3, "") <> "" Then
Me.TargetTextBox = Me.LB1 & Me.LB2 & "_" & Me.LB3
End If
End Sub
Also, not using the Control Source to do this will allow the user, if a mistake is made, such as selecting 'C' when they meant to select 'D,' to quickly edit the TargetTextBox to reflect this.
Just my opinion; to each his own!
Linq ;0)>