Avatar billede mbpedersen Nybegynder
02. oktober 2006 - 09:22 Der er 4 kommentarer og
1 løsning

Søgning på felt i listbox

Jeg skal have en bruger til at vælge flere records i en listbox. Pr. default (Access) kan brugeren indtaste den første karakter i det bundene felt, hvorved listbox springer ned til denne værdi. Nu er der i midlertid tale om værdier fra 00001 til 90000. Taster brugeren fx. et 2 tal, ender brugeren på den første værdi i listboxen som starter med 2. Herefter skal brugeren scrolle for at finde den værdi, han skal vælge, fx. 24590, hvilket er tidskrævende. Det var nemmere, hvis det var muligt, at taste fx 245 og så komme ned til 24500 og herefter scrolle. Men hvis 245 indtastes, ender brugeren ved de værdier der starter med 5 - altså 50000.

Er der en mulig måde, at få Access til at accepterer mere end en karakter i søgningen? Jeg er ikke interesseret i at oprettet yderligere et ubundet felt til søgning i listboxen.
Avatar billede supertekst Ekspert
02. oktober 2006 - 17:37 #1
Eksemepel - måske lidt inspiation:

Private Sub Form_Close()
    If Me.Controls("Liste6").ListCount > 0 Then
        For f = 0 To Me.Controls("Liste6").ListCount - 1
            Me.Controls("Liste6").RemoveItem Index:=0
        Next f
    End If
End Sub
Private Sub Form_Open(Cancel As Integer)
Dim f
    Set PRec = CurrentDb.OpenRecordset("PostnrBy")
   
    For f = 1 To PRec.RecordCount
        Me.Controls("Liste6").AddItem CStr(PRec.Fields(0))
        PRec.MoveNext
    Next f
End Sub
Private Sub Tekst4_Change()
Dim tegn, f, linie
  tegn = Tekst4.Text
  Me.Controls("Liste6").SetFocus
   
    For f = 0 To Liste6.ListCount - 1
        Me.Controls("Liste6").ListIndex = f
       
        linie = Controls("Liste6").Value
       
        If tegn = Left(linie, Len(tegn)) Then
          Me.Controls("Liste6").ListIndex = f
            With Me.Controls("Tekst4")
                .SetFocus
                .SelStart = Len(linie)
                Exit Sub
            End With
        End If
    Next f
End Sub
Avatar billede mbpedersen Nybegynder
02. oktober 2006 - 19:32 #2
Hej Supertekst

Tak for din besvarelse! Din kode giver desværre samme resultat. Der søges kun efter første karakter i listboxen - den kan ikke søge efter 3, 4, 5 karakterer.

Men jeg har da ladet mig inspirere af dit indlæg. Jeg slipper jo nok ikke for et ubundet tekstfelt. Det har jeg taget til mig, og herefter sender jeg så en sql streng til listboxens rowsourse, hvori jeg bruger funktionen Like. Så har jeg også ladet mig inspirere af din setfocus.

Jeg tror ikke, at der findes en løsning på mit problem. Jeg ville ønske, at det var lige som i explorer, hvor jeg kan stave mig frem til et fil- eller mappenavn - det ville have været optimal i min database.

Alligevel er jeg parat til at belønne din kommentar, da det jo er et spørgsmål, der ikke har været så mange kommentarer/svar til, og jeg skal videre i "teksten". Derfor Supertekst - læg venligst et svar - så får du pointene.
Avatar billede supertekst Ekspert
02. oktober 2006 - 21:32 #3
Hej mbpedersen

Du får et svar & tak!
Avatar billede mbpedersen Nybegynder
03. oktober 2006 - 07:16 #4
Velbekomme.
Avatar billede supertekst Ekspert
03. oktober 2006 - 14:29 #5
Du skal nok acceptere svaret, hvis du vil give points :-)

Men iøvrigt - har eksperimenteret lidt mere og så vidt jeg kan se, kan det lade sig gøre ved at anvende en kombinationsboks og udennogen VBA-kode:

Egenskaber:
- Kontrolelementkilde: <tom>
- Rækkekildetype: Tabel/forespørgsel
- Rækkekilde: Den pågældende tabel
- BundetKolonne: 1
- BegrænsTilListe: Nej
- Autoudfyld: Ja
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester