Group:  Microsoft Access ยป microsoft.public.access.formscoding
Thread: Clear items selected from multiselect list box

Geek News

Clear items selected from multiselect list box
NKK 12/17/2008 9:53:01 PM
I have a form bound to a table (dt_accounts) with an unbound listbox that I
have set up to insert multiple records into another table (dt_accountrole)
that has a many to 1 relationship to the table the form is based on. The
field Account_id is the primary key in dt_accounts and a foreign key in
dt_accountrole. For every selection in the list box, a record is entered
into the dt_accountrole table using the following vba code (thanks to someone
else in this group!):

Dim varItem As Variant
Dim rst As DAO.Recordset

Set rst = CurrentDb.OpenRecordset("dt_AccountRole", dbOpenDynaset)

With Me.lboAcctRole
For Each varItem In .ItemsSelected
rst.AddNew
rst![Role_id] = .ItemData(varItem)
rst![Account_id] = Me.Account_id
rst.Update
Next varItem
End With
rst.Close
Set rst = Nothing
End Sub

This code is on the exit event...my problem is that if I move to the next
record, the selections from the previous record are still highlighted. How
to I "clear" the selections from the list box when moving between records?
Thanks in advance

Re: Clear items selected from multiselect list box
"Dirk Goldgar" <dg[ at ]NOdataSPAMgnostics.com.invalid> 12/17/2008 9:59:38 PM
"NKK" <nicole.krzywonski[ at ]dshs.state.tx.us> wrote in message
news:735927EB-9F1F-4369-BC1D-D152F0219E21[ at ]microsoft.com...
[Quoted Text]
>I have a form bound to a table (dt_accounts) with an unbound listbox that I
> have set up to insert multiple records into another table (dt_accountrole)
> that has a many to 1 relationship to the table the form is based on. The
> field Account_id is the primary key in dt_accounts and a foreign key in
> dt_accountrole. For every selection in the list box, a record is entered
> into the dt_accountrole table using the following vba code (thanks to
> someone
> else in this group!):
>
> Dim varItem As Variant
> Dim rst As DAO.Recordset
>
> Set rst = CurrentDb.OpenRecordset("dt_AccountRole", dbOpenDynaset)
>
> With Me.lboAcctRole
> For Each varItem In .ItemsSelected
> rst.AddNew
> rst![Role_id] = .ItemData(varItem)
> rst![Account_id] = Me.Account_id
> rst.Update
> Next varItem
> End With
> rst.Close
> Set rst = Nothing
> End Sub
>
> This code is on the exit event...my problem is that if I move to the next
> record, the selections from the previous record are still highlighted.
> How
> to I "clear" the selections from the list box when moving between records?
> Thanks in advance


Here's a procedure you can call, passing it the list box to be cleared:

'----- start of code -----
Public Sub ClearListbox(lst As Access.ListBox)

Dim lngx As Long

With lst
For lngx = (.ItemsSelected.Count - 1) To 0 Step -1
.Selected(.ItemsSelected(lngx)) = False
Next lngx
End With

End Sub

'----- end of code -----

With that procedure stored in a standard module, you can call it from your
form's Current event:

Private Sub Form_Current()

ClearListbox Me!lboAcctRole

End Sub


--
Dirk Goldgar, MS Access MVP
www.datagnostics.com

(please reply to the newsgroup)

Re: Clear items selected from multiselect list box
NKK 12/18/2008 6:07:05 PM
Thanks...that worked nicely!

"Dirk Goldgar" wrote:

[Quoted Text]
> "NKK" <nicole.krzywonski[ at ]dshs.state.tx.us> wrote in message
> news:735927EB-9F1F-4369-BC1D-D152F0219E21[ at ]microsoft.com...
> >I have a form bound to a table (dt_accounts) with an unbound listbox that I
> > have set up to insert multiple records into another table (dt_accountrole)
> > that has a many to 1 relationship to the table the form is based on. The
> > field Account_id is the primary key in dt_accounts and a foreign key in
> > dt_accountrole. For every selection in the list box, a record is entered
> > into the dt_accountrole table using the following vba code (thanks to
> > someone
> > else in this group!):
> >
> > Dim varItem As Variant
> > Dim rst As DAO.Recordset
> >
> > Set rst = CurrentDb.OpenRecordset("dt_AccountRole", dbOpenDynaset)
> >
> > With Me.lboAcctRole
> > For Each varItem In .ItemsSelected
> > rst.AddNew
> > rst![Role_id] = .ItemData(varItem)
> > rst![Account_id] = Me.Account_id
> > rst.Update
> > Next varItem
> > End With
> > rst.Close
> > Set rst = Nothing
> > End Sub
> >
> > This code is on the exit event...my problem is that if I move to the next
> > record, the selections from the previous record are still highlighted.
> > How
> > to I "clear" the selections from the list box when moving between records?
> > Thanks in advance
>
>
> Here's a procedure you can call, passing it the list box to be cleared:
>
> '----- start of code -----
> Public Sub ClearListbox(lst As Access.ListBox)
>
> Dim lngx As Long
>
> With lst
> For lngx = (.ItemsSelected.Count - 1) To 0 Step -1
> .Selected(.ItemsSelected(lngx)) = False
> Next lngx
> End With
>
> End Sub
>
> '----- end of code -----
>
> With that procedure stored in a standard module, you can call it from your
> form's Current event:
>
> Private Sub Form_Current()
>
> ClearListbox Me!lboAcctRole
>
> End Sub
>
>
> --
> Dirk Goldgar, MS Access MVP
> www.datagnostics.com
>
> (please reply to the newsgroup)
>
>

Home | Search | Terms | Imprint Contact
Newsgroups Reader - provided by WiredBox.Net