Toon posts:

[vb]tekstbox waarde vergelijken met listbox waarde

Pagina: 1
Acties:
  • 132 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik wil een tekstbox maken en een listbox(waarde wordt uit access2000 gehaald).
Als ik in de tekstbox een waarde type moet de waarde worden vergeleken met de waarde van de listbox. De listbox moet dus de waardes weglaten die er niets mee te maken hebben.

Bijvoorbeeld.

Tekstbox :Bedrijfs (getypt door de gebruiker)
Listbox : Bedrijfs agenda, Bedrijfs feest, bedrijfs voorstelling(overgebleven items)

Nu weet ik hoe ik de gegevens kan laten tonen uit een Access database. Dat is geen probleem

Maar hoe kan ik de juiste waardes laten overhouden in de listbox vergeleken met het getypte woord in de tekstbox?

Ik hoop dat mijn vraag duidelijk is....

  • whoami
  • Registratie: December 2000
  • Nu online
Listbox overlopen,
indien 'bedrijf' niet voorkomt in item -> item weghalen. (van onder naar boven)

of
query opnieuw uitvoeren.
listbox leegmaken
listbox opvullen

https://fgheysels.github.io/


  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 09:19

johnwoo

3S-GTE

Je zou bij iedere verandering in de textbox, de listbox kunnen legen en opnieuw vullen met de correcte waarden (die je bijv. in een collection opslaat). Een efficientere manier is echter om:
1. Eerst alle waarden uit de listbox door te lopen en ze zo nodig eruit te halen.
2. Vervolgens de collection (of wat de bron ook is) doorlopen en alle waarden die er nu wel in moeten, naar de listbox verplaatsen.

Even uit de losse pols: (colItems is de collectie met items, deze wordt na de query gevuld met alle waarden)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Sub Text1_Change()
  Dim Index As Integer, Aantal As Integer, Lengte As Integer

  Lengte = Len(Text1.Text)

  ' Foute waarden terug van listbox naar collection:
  Aantal = List1.ListCount
  For Index = 0 To Aantal - 1
    If Left$(List1.List(Index), Lengte) <> Text1.Text Then
    colItems.AddItem List1.List(Index)
    List1.RemoveItem Index
    Aantal = Aantal - 1
    End If
  Next Index

  ' Juiste waarden van collection naar listbox:
  Aantal = colItems.Count
  For Index = 1 To Aantal ' collections beginnen bij 1
    If Left$(colItems.Item(Index), Lengte) = Text1.Text Then
    List1.AddItem colItems.Item(Index)
    colItems.RemoveItem Index
    Aantal = Aantal - 1
    End If
  Next Index
End Sub

Deze manier bespaart je heel wat geschuif met items als het aantal een beetje groter wordt.

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


Verwijderd

Topicstarter
Bedankt,

Ik heb het nu alleen zo gedaan:
code:
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Text1_Change()
intPlacement = Len(Text1) 
    strFind = UCase(Text1.Text) 
    lstbox2.Clear  
    Text1.SetFocus 
      For intResult = 0 To 100
        intSearchResult = InStr(UCase(Left(lstbox1.list(intResult), intPlacement)), strFind) 
         If intSearchResult > 0 Then 
         lstbox2.AddItem lstBox1.list(intResult) Else 'Do Nothing
         End If
      Next intResult
End Sub

+ een module..

Moet nog wat sleutelen, maar het is een goed begin.Bedankt