Ms Access zoekfunctie

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Cornk
  • Registratie: Augustus 2023
  • Laatst online: 15-01 18:41
Ik heb in ms access een zoekveld toegeovoegd. Als ik de tekstvak met meerkeuze uitvouw, krijg ik een lijst met alle record.
Ik wil op gedeeltes van de tekst zoeken en die moeten worden weergegeven.

In onderstaande afbeelding zien jullie een stukje van het programma. Als ik bijvoorbeeld lever intik wil ik dat alle records worden geladen waar lever naar voren komt.
Hoe stel ik dit in? Op internet krijg ik dit niet gevonden.
Afbeeldingslocatie: https://tweakers.net/i/Q3JdpuoUVAzK9Bovkbjsd1lXaoo=/800x/filters:strip_exif()/f/image/26ohjvFlrvCgCPHLjqDrSbMS.png?f=fotoalbum_large

Alle reacties


Acties:
  • 0 Henk 'm!

  • Peter Kerkhof
  • Registratie: Juni 2024
  • Laatst online: 03-06-2024
### Stap 1: Maak een Formulier
1. **Open je Access-database** en maak een nieuw formulier aan waarin je het zoekveld wilt hebben.
2. **Voeg een tekstvak toe** aan het formulier. Dit wordt je zoekveld. Noem dit `txtSearch`.
3. **Voeg een knop toe** naast het tekstvak. Deze knop zal de zoekactie activeren. Noem deze `btnSearch`.
4. **Voeg een subformulier toe** om de zoekresultaten weer te geven. Dit subformulier moet gebaseerd zijn op de tabel of query waarin je wilt zoeken. Noem dit `subfrmResults`.

### Stap 2: Schrijf VBA-code voor de Zoekactie
1. **Open het formulier in Ontwerpweergave** en open de VBA-editor door te klikken op `Ontwerp` > `Code`.
2. **Voeg de volgende VBA-code toe** aan de module van het formulier:

```vba
Private Sub btnSearch_Click()
Dim strSearch As String
Dim strFilter As String

' Verkrijg de zoekterm uit het tekstvak
strSearch = Me.txtSearch.Value

' Stel de filterstring samen voor het subformulier
strFilter = "FieldName LIKE '*" & strSearch & "*'"

' Pas het filter toe op het subformulier
Me.subfrmResults.Form.Filter = strFilter
Me.subfrmResults.Form.FilterOn = True
End Sub
```

Vervang `FieldName` door het werkelijke veld waarin je wilt zoeken in je tabel of query. Als je in meerdere velden wilt zoeken, kun je de `strFilter` string als volgt aanpassen:

```vba
strFilter = "(FieldName1 LIKE '*" & strSearch & "*' OR FieldName2 LIKE '*" & strSearch & "*' OR FieldName3 LIKE '*" & strSearch & "*')"
```

3. **Sla de VBA-code op** en sluit de VBA-editor.

### Stap 3: Test het Zoekveld
1. **Open het formulier** in Formulierweergave.
2. **Voer een zoekterm in** in het `txtSearch` tekstvak.
3. **Klik op de `btnSearch` knop**. Het subformulier moet nu bijgewerkt worden om alleen de records weer te geven die aan de zoekcriteria voldoen.

### Aanvullende Tips
- Als je de zoekactie wilt resetten en alle records wilt weergeven, kun je een andere knop toevoegen om het filter te wissen:
```vba
Private Sub btnClearSearch_Click()
Me.txtSearch.Value = ""
Me.subfrmResults.Form.FilterOn = False
End Sub
```
- Om gevallen te behandelen waarin het zoekveld leeg is (om alle records weer te geven), kun je een voorwaarde toevoegen:
```vba
Private Sub btnSearch_Click()
Dim strSearch As String
Dim strFilter As String

' Verkrijg de zoekterm uit het tekstvak
strSearch = Me.txtSearch.Value

' Controleer of de zoekterm leeg is
If strSearch = "" Then
Me.subfrmResults.Form.FilterOn = False
Else
' Stel de filterstring samen voor het subformulier
strFilter = "FieldName LIKE '*" & strSearch & "*'"

' Pas het filter toe op het subformulier
Me.subfrmResults.Form.Filter = strFilter
Me.subfrmResults.Form.FilterOn = True
End If
End Sub
```

Door deze stappen te volgen, heb je een functioneel zoekveld in je Access-formulier waarmee je in alle records in je database kunt zoeken.


-----------------------------

Ik heb deze uitleg voor je gevonden op het internet. Heb het verder niet getest op een goede werking.

Succes met je code.

Met vriendelijke groet,
Peter
:)