Gustav Brock
gustav at cactus.dk
Thu Sep 25 04:55:46 CDT 2003
Hi David
Well, how about the Click event ...?
This will also fire when using keys.
<code>
Dim lst As ListBox
Dim lngIndex As Long
Dim strKey As String
Dim booSelected As Boolean
Set lst = Me!lstDemo
With lst
lngIndex = .ListIndex + Abs(.ColumnHeads)
strKey = .ItemData(lngIndex)
booSelected = .Selected(lngIndex)
End With
MsgBox strKey & ":" & Str(booSelected)
If booSelected = True Then
' Append strKey to collection/selection.
Else
' Remove strKey from collection/selection.
End If
Set lst = Nothing
</code>
However, the event will fire also when using the navigation keys.
Thus, I would follow the advice of Drew to append/remove the selected
items to an (interim) collection or array and only run the
append/delete action query (or code) on the table if an item really is
appended or removed from the collection or array.
/gustav
> How do I determine which item has just been selected/deselected? Then I
> could add it if selected, or delete if deselected.
>>It sounds/looks like you are building the complete list every time an
>>item is selected. Why not add only that item which has been selected?
>>
>>/gustav
>>
>>
>> > I have a listbox which is used to select clients for including in
>> > reports. When the listbox is updated I have a separate text box that
>> > shows
>> > the names of the clients selected and the number selected. At the same
>> > time I store the ID's of the clients in a table that is used to filter out
>> > the required client records. The initial list box has over 1800 names. It
>> > is taking about 10 seconds to update the lists each time a client is
>> > selected. If I rem out the adding of ID's to the table then the time
>> > reduces to about 3 seconds. The main part of the code is -
>>
>> > With Me!lstClientList
>> > For Each varItem In .ItemsSelected
>> > If .Selected(varItem) = True Then
>> > strList = strList & .Column(1, varItem) & vbCrLf ' Adds
>> > client name to selected list
>> > intClientNo = intClientNo +
>> 1 '
>> > Counts number of selected clients
>> > rst.AddNew
>> > 'Add client ID to table
>> > rst!CustIDNo = .Column(0, varItem)
>> > rst.Update
>> > End If
>> > Next varItem
>> > End With
>>
>> > Any thoughts as to how I can speed up the process? The BE is SQL2000.