I have two tables; one that stores the data entered into the form (tblPSB
Request Database) and one that contains the values the populate the list
boxes (tblListBoxes). I want the multiple values selected from the list
boxes to end up in the corresponding fields of the main table (tblPSB Request
Database).
What are the relevant fields in these tables? How are they related, if at all?
I use list boxes because, as I said, I am a novice user and I don't
understand subforms. Further, the director of the agency wants users of the
form to be able to select multiple items from a list.
Take a look at the Orders form in the Northwind sample database which comes
with Access. It uses a subform; it lets users select multiple items from a
list; *it does what you want to do*. Subforms don't bite, the actually make
life easier for you as the developer and for the user. Learn to use them!
I'm sure I'm using incorrec terminology when I say a query is "attached", so
please humor me. I just mean a query is based on that table.
I just would like to know how to store the multiple items selected from the
list boxes in the form in the main table. Any help would be very greatly
appreciated.
If you really want to do it the hard way, here's some VBA code which will take
multiple selections from a listbox and store them in multiple rows of a child
table. Since I don't know the structure of your table I don't know if this is
relevant, but it's an example of what you will need to do to use multiselect
listboxes. Trust me... subforms are MUCH easier!
Private Sub cmdProcess_Click()
' Comments : Update the AnimalCondition table based on the selections in
' the unbound multiselect listbox lstHealthIssues.
' Newly selected rows will be added to the table, newly
cleared
' rows will be deleted.
' Parameters: None
' Modified : 01/29/02 by JWV
'
' --------------------------------------------------
' Populate the AnimalCondition table with the selected issues
On Error GoTo PROC_ERR
Dim iItem As Integer
Dim lngCondition As Long
Dim db As DAO.Database
Dim rs As DAO.Recordset
' save the current record if it's not saved
If Me.Dirty = True Then
Me.Dirty = False
End If
Set db = CurrentDb
' Open a Recordset based on the table
Set rs = db.OpenRecordset("AnimalCondition", dbOpenDynaset)
With Me!lstHealthIssues
' Loop through all rows in the Listbox
For iItem = 0 To .ListCount - 1
lngCondition = .Column(0, iItem)
' Determine whether this AnimalID-HealthID combination is
currently
' in the table
rs.FindFirst "[AnimalID] = " & Me.AnimalID & " AND " _
& "[HealthIssueID] = " & lngCondition
If rs.NoMatch Then ' this item has not been added
If .Selected(iItem) Then
' add it
rs.AddNew
rs!AnimalID = Me.AnimalID
rs!HealthIssueID = lngCondition
rs.Update
End If ' if it wasn't selected, ignore it
Else
If Not .Selected(iItem) Then
' delete this record if it's been deselected
rs.Delete
End If ' if it was selected, leave it alone
End If
Next iItem
End With
rs.Close
Set rs = Nothing
Set db = Nothing
Me.subAnimalCondition.Requery
PROC_EXIT:
Exit Sub
PROC_ERR:
MsgBox "Error " & Err.Number & " in cmdProcess_Click:" _
& vbCrLf & Err.Description
Resume PROC_EXIT
End Sub
John W. Vinson [MVP]