Gedeeltelijk matchen tussen tekstvak en tabel

Status
Niet open voor verdere reacties.

Vuurbok

Gebruiker
Lid geworden
20 feb 2010
Berichten
65
Hoi mensen,

Het lukt mij niet om een deel van het tekstvakje (txt_Patient_HOVON_Number) te kunnen vergelijken met de vaste gegevens in de tabel (tbl_HOVON_Study_Number) of het voorkomt of niet. Dit wil ik graag doen met VBA. In een kolom HOVON_Study_Number van de tabel zelf staan H102-, H103-, H104-. Dus als ik in een tekstvakje H102-44 schrijf, moet de VBA deze controleren of "H102-" overeenkomt met die van de kolom. Dit is toch mogelijk? :confused:

Code:
Private Sub txt_Patient_HOVON_Number_AfterUpdate()
        If Me.txt_Patient_HOVON_Number = dlookup("[HOVON_Study_Number]", "[tbl_HOVON_Study_Number]", "[HOVON_Study_Number] Like '*" & Me.txt_Patient_HOVON_Number & "*'") Then
        Me.txt_Patient_HOVON_Number = "Ja"
    Else
        Me.txt_Patient_HOVON_Number = "Geen match!"
        End If
End Sub

En anders mijn excuses als het blijkt dat er al een oplossing aanwezig is op dit forum. Ik wist niet zeker naar wat ik precies moet zoeken om mijn probleem te kunnen oplossen. :d
 
Hoi mensen,

Deze funktie heb ik nu geprobeerd, maar het probleem blijft hetzelfde. Als ik alleen H102- (wat ook in tabel staat) in tekstvakje invul, dan is het antwoord "Ja". Maar vul ik H102-3 in het tekstvakje, dan klopt er iets niet aan die funktie. Dan krijg ik een "run-time error '94': Invalide use of Null". Het lijkt erop dat deze funktie nog steeds op volle vergelijking berust, terwijl ik een gedeeltelijke vergelijking wil. Heb ik misschien iets vergeten? :(

Code:
Private Sub txt_Patient_HOVON_Number_AfterUpdate()
        Dim PartialMatch As String
        
        PartialMatch = dlookup("[HOVON_Study_Number]", "[tbl_HOVON_Study_Number]", "[HOVON_Study_Number] Like '*" & Me.txt_Patient_HOVON_Number & "*'")
        If InStr([txt_Patient_HOVON_Number], PartialMatch) Then
        Me.txt_Patient_HOVON_Number = "Ja"
    Else
        Me.txt_Patient_HOVON_Number = "Nee"
        End If
End Sub
 
Laatst bewerkt:
Misschien zo

Code:
Private Sub txt_Patient_HOVON_Number_AfterUpdate()
        Dim PartialMatch As String
        
        PartialMatch = Nz(DLookup("[HOVON_Study_Number]", "[tbl_HOVON_Study_Number]", "[HOVON_Study_Number] Like '*" & Trim(Me.txt_Patient_HOVON_Number) & "*'"))
        
        If InStr([txt_Patient_HOVON_Number], PartialMatch) And Len(PartialMatch) > 0 Then
        Me.txt_Patient_HOVON_Number = "Ja"
    Else
        Me.txt_Patient_HOVON_Number = "Nee"
        End If
End Sub

Groet Jan
 
Als ik het goed lees, ben je verkeerd om aan het matchen.
In een kolom HOVON_Study_Number van de tabel zelf staan H102-, H103-, H104-. Dus als ik in een tekstvakje Me.txt_Patient_HOVON_Number de waarde H102-44 schrijf, moet de VBA deze controleren of "H102-" overeenkomt met die van de kolom.

Dus zoals ik het begrijp: je typt in je tekstvak de waarde H102-44, en je gaat vervolgens in de tabel kijken of die waarde bestaat. Maar in je tabel heb je dit staan: H102-. En dat ga je dus niet vinden.
 
Hoi OctaFish,

Het gaat inderdaad die kant op, maar het is niet helemaal wat ik bedoelde. Als een deel van de waarde die ik in mijn tekstvak ingetikt heb overeenkomt met die van de tabel, dus in dit geval "H102-" als voorbeeld, moet de VBA dit controleren of "H102-" bestaat. Dit deel "H102-" heb ik nodig om de patiënten te kunnen nummeren, dus een voorbeeld: H102-33, H102-7 etc. :) Deze manier van gedeeltelijk matchen moet toch kunnen? :D
 
Dit moet werken:

Code:
Private Sub txt_Patient_HOVON_Number_AfterUpdate()
Dim sMatch As String, strSQL As String
Dim iLen As Integer

    iLen = Len(Me.txt_Patient_HOVON_Number)
    strSQL = "SELECT DISTINCT [HOVON_Study_Number] FROM [tbl_HOVON_Study_Number] " _
        & "WHERE Left([HOVON_Study_Number]," & iLen & ")='" & Me.txt_Patient_HOVON_Number & "'"
    With CurrentDb.OpenRecordset(strSQL)
        If .EOF And .BOF Then
            Me.txt_Patient_HOVON_Number = "Nee"
        Else
            Me.txt_Patient_HOVON_Number = "Ja"
        End If
    End With
End Sub
 
Hoi OctaFish,

Bedankt voor je moeite! Ik zal je voorgestelde VBA-code uitproberen. Een vraagje: Klopt het dat ik een ontbrekende string "sMatch" nog moet aanmaken? Is dit hetzelfde wat ik eerder had geprobeerd met deze volgende VBA-code:

PartialMatch = Nz(DLookup("[HOVON_Study_Number]", "[tbl_HOVON_Study_Number]", "[HOVON_Study_Number] Like '*" & Trim(Me.txt_Patient_HOVON_Number) & "*'"))? :)
 
De variabele sMatch kan weg, want die wordt in mijn variant niet gebruikt.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan