Helpmij.nl
Helpmij.nl
Helpmij.nl

Quote

Weergeven resultaten 1 tot 8 van 8

Onderwerp: Access, Query Invoermasker/Criteria

  1. #1
    Junior Member
    Geregistreerd
    22 september 2022
    Vraag is niet opgelost

    Post Access, Query Invoermasker/Criteria

    Hi allen!

    Ik ben op zoek naar een oplossing voor het volgende probleem:

    Ik wil een zoekfunctie maken voor een bepaalde Cel in de database.
    Deze is werkend, echter lukt het niet om één handeling te voltooien.

    Het doel is het zoeken van een viercijferige code van een telefoonnummer in een formulier, die de gegevens uit een gelinkte query haalt.

    Ik heb momenteel een invoerbalk met keuzemenu gemaakt omdat de nummers die uiteindelijk gevonden zijn dan ook gekozen moeten worden.
    Hierin moeten dus vier cijfers worden ingevuld om vervolgens de matchende resultaten te zien in de balk.
    Echter, moet de gebruiker, de viercijferige code kunnen intypen, de zoekbalk moet uit telefoonnummers van alle leads vervolgens deze viercijferige code vinden.

    Ik ben zelf niet verder gekomen om de desbetreffende query van de criteria te vullen met ? danwel #.

    In de database staan verschillende soorten telefoonnummers, daarnaast staat er tekst in de cel, dus het moet mogelijk zijn om op vier waarden van deze cel te zoeken.

    Dus als ik 1569 invul, moet als eerste vier cijfers, ergens in het midden of aan het einde gevonden kunnen worden.

    Omdat niet alle telefoonnummers op dezelfde manier zijn ingevuld (+316, +31 6, 06, 040, 04 09) lijkt me dit een onmogelijke opgave.

    Ik hoop dat iemand me hiermee verder kan helpen!

    Ik hoop dat alles een beetje duidelijk is, anders wil ik het graag nog even toelichten!

    Alvast bedankt!

    NigellusTheNVG

  2. #2
    Member xps351's avatar
    Geregistreerd
    22 juni 2022
    Locatie
    Schiedam
    Echt heel duidelijk is het niet, maar ik vermoed dat je met de functies Replace (spaties verwijderen) en Instr (komt een string ergens voor) een heel eind moet kunnen komen.
    Ik maakte bijvoorbeeld een query met de volgende WHERE clause:
    Code:
    WHERE InStr(Replace([Tel]," ",""),"1569")>0;
    Vrij vertaald: zoek naar telefoonnummers waaruit spaties verwijderd zijn en waarin de string "1569" voorkomt.
    Groeten,

    Peter

  3. #3
    Mega Senior NoellaG's avatar
    Geregistreerd
    10 april 2019
    Locatie
    Melsele
    De oplossing die in de meeste applicaties wordt gebruikt: zoekvelden. Je voegt een extra berekend veld toe aan je tabel waarin je de gestripte versie van het telefoonnr opneemt: alleen de cijfers, zonder spaties, streepjes of whatever. Als je dit systeem voor namen gebruikt: verwijder ook alle ¨/, é of è wordt E, ... enzovoort. Normaal maak je dit veld persistent zodat het ook weggeschreven wordt en niet steeds herrekend moet worden (ik weet niet of dit bij Access tabellen kan, in databases zeker wel). Als je geen berekend veld in een tabel wil : je kan hiervoor een eigen functie schrijven en deze éénmalig in een update query uitvoeren voor de bestaande gegevens. Daarna kan je in een formulier in een after update of via een data macro ervoor zorgen dat bij aanpassingen of toevoegen van gegevens dit veld up-to-date blijft.
    Ik zou niet gaan zoeken in een berekend query veld, want eens dat je meer dan een paar honderd gegevens hebt kan ... dit ... ontzettend ... traag ... worden.
    SQL DBA
    (just like a normal person - only way cooler)

  4. #4
    Mega Senior
    Geregistreerd
    3 november 2021
    Gelukkig is Access niet 'in de meeste applicaties'; de oplossing van Peter lijkt mij meer dan afdoende. Zelf doe ik dat met een vergelijkbare zoekstring (Replace en Instr) op een keuzelijst met invoervak, waarbij je in het invoervak dus de geschoonde zoektekst typt en die dan als filter op het formulier gebruikt. En waarbij een klik op een waarde uit de gevonden lijst dan een actie start. Of, als je alleen een tekstveld wilt gebruiken waarmee je het doorlopende formulier kunt filteren, dan kan dat bijvoorbeeld zo:

    Code:
    Private Sub Zoektekst_Change()
    Dim sZ As String
    
        sZ = Me.Zoektekst.Text
        If Len(sZ) > 0 Then
            Me.Filter = "[Telefoonnummer] Like ""*" & sZ & "*"""
            Me.FilterOn = True
            Me.Zoektekst.SelStart = Len(sZ)
        Else
            Me.Filter = ""
            Me.FilterOn = False
        End If
    End Sub
    Deze methode werkt in jouw geval uiteraard niet perfect, omdat je de spaties niet weghaalt uit het telefoonnummer. Maar je kunt deze functie ook gebruiken om de onderliggende query aan te passen, en dat doe je dan door een WHERE te maken zoals Peter dat al voorstelt.

  5. #5
    Junior Member
    Geregistreerd
    22 september 2022

    Query Zoekbalk

    Ik heb alle foto's van de verschillende tabs even hierin gezet.

    Ik denk dat het aardig in de goede richting is, maar ben specifiek naar één functie op zoek.

    Ik heb een Tabel Eigenaren met de eigenaren en de nummers.
    Ik heb een Query waarin er gezocht kan worden.
    Ik heb het eigenschappenvenster van de Query gedeeld.
    Tot slot heb ik ook het dropdown menu gedeeld waarin gezocht moet worden.

    In dit voorbeeld komen er meerdere nummers voor waar 555 in zit.

    Ik wil in de zoekbalk, welke de nummers en de eigenaren laat zien, bijvoorbeeld kunnen zoeken op 555.
    Hierin moet de zoekbalk dan alle eigenaren laten zien waarvan het nummer 555 bevat.

    Echter, moet deze dus ook de combinaties 55 5 en 5 55 laten zien.

    Ik hoop dat ik het hiermee iets duidelijker heb gemaakt.

    Alvast bedankt voor de moeite en tijd.
    Bijgevoegde kleine afbeeldingen Bijgevoegde kleine afbeeldingen Klik op afbeelding voor grotere versie

Naam:  Voorbeeld 1.PNG‎
Bekeken: 16
Grootte:  8,9 KB   Klik op afbeelding voor grotere versie

Naam:  Voorbeeld 2.PNG‎
Bekeken: 16
Grootte:  12,8 KB   Klik op afbeelding voor grotere versie

Naam:  Voorbeeld 3.PNG‎
Bekeken: 18
Grootte:  12,3 KB   Klik op afbeelding voor grotere versie

Naam:  Voorbeeld 4.PNG‎
Bekeken: 19
Grootte:  10,6 KB   Klik op afbeelding voor grotere versie

Naam:  Voorbeeld 5.PNG‎
Bekeken: 16
Grootte:  22,4 KB  


  6. #6
    Member xps351's avatar
    Geregistreerd
    22 juni 2022
    Locatie
    Schiedam
    Je kan je query dan toch aanpassen / aanvullen met de suggestie die ik deed? Het enige dat je aan moet passen is dat er geen vaste waarde ("1569") in staat, maar dat je op die plek verwijst naar het veld op het zoekformulier.
    Groeten,

    Peter

  7. #7
    Junior Member
    Geregistreerd
    22 september 2022

    Query Zoekbalk

    Hoe komt de formule er dan uit te zien? Ik heb nooit eerder met dit soort formules gewerkt.

    Alvast bedankt!

  8. #8
    Member xps351's avatar
    Geregistreerd
    22 juni 2022
    Locatie
    Schiedam
    Er zijn meerdere wegen die naar Rome leiden. Ik heb een formulier gemaakt waar je een deel van een nummer in kan geven. Op het formulier staat een subformulier voor de resultaten. Ook staat er een knop om de resultaten in te perken op basis van de ingave:
    Code:
    Private Sub Zoek_Click()
    
    If IsNull(Me.ZoekTel) Then
        MsgBox "Vul (een deel van) een nummer in", vbCritical, Invullen
    Else
        Me.frmZoekResultaat.Form.RecordSource = "SELECT * FROM Eigenaren WHERE InStr(Replace([Nummer 2],' ',''),'" & Me.ZoekTel & "')>0"
    End If
    
    
    End Sub
    Ik heb een voorbeelddatabase bijgevoegd.

    Nog een tip(je): gebruik bij voorkeur geen veldnamen met spaties of speciale tekens. Dat kan problemen opleveren. Hier moest ik bijvoorbeeld Nummer 2 tussen haken zetten.
    Bijgevoegde bestanden Bijgevoegde bestanden
    Groeten,

    Peter

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl en business

Partners
Sponsoren