Criteria zoekfunctie

Status
Niet open voor verdere reacties.

roderikvolman

Gebruiker
Lid geworden
30 jun 2014
Berichten
24
Beste lezer,

Allereerst hartelijk dank voor alle hulp die ik tot nu toe heb mogen ontvangen van de gebruikers van dit forum.

Mijn database is bijna af. Het enige wat nog ontbreekt is een goedwerkende zoekfunctie. Onderstaande code gebruik ik. Echter werkt het prima als ik de volledige criteria invul maar graag zou ik het zo willen dat als ik "lev" typ dat hij alles vind was met "lev" begint.

hieronder mijn code:
Code:
Private Function BuildFilter() As Variant
    Dim varWhere As Variant
    Dim tmp As String
    tmp = """"
    
    Const conJetDate = "\#dd\/mm\/yyyy\#*"
    
    varWhere = Null
    
    If Me.txtleverancier > "" Then
    varWhere = varWhere & "[Leverancier] like " & tmp & Me.txtleverancier & tmp & " AND "
    End If
    
    If Me.txteigenaar > "" Then
    varWhere = varWhere & "[Contract eigenaar] like " & Me.txteigenaar & " AND "
    End If
    
    If Me.txtDatef > "" Then
    varWhere = varWhere & "([Einddatum]>= " & Format(Me.txtDatef, conJetDate) & ") AND "
    End If
    
     If Me.txtDatet > "" Then
    varWhere = varWhere & "([Einddatum]<= " & Format(Me.txtDatet, conJetDate) & ") AND "
    End If
    
    If IsNull(varWhere) Then
        varWhere = ""
    Else
        varWhere = "WHERE " & varWhere
    End If
        
        If Right(varWhere, 5) = " AND " Then
        varWhere = Left(varWhere, Len(varWhere) - 5)
    End If
 
Laatst bewerkt:
Je gebruikt al de juiste variant (LIKE) maar niet de juiste uitvoering. Als je een deel van een tekst zoekt in een query, zie je de juiste constructie:
Code:
(ApptNotes) Like "*kom*")
Je mist derhalve de asteriksen. Kun je zo oplossen:
Code:
    Dim tmp1 As String, tmp2 As String, varWhere As String, sVeld As String
    tmp1 = """*"
    tmp2 = "*"""
    sVeld = InputBox("Typ de waarde", "Zoekwaarde")
    varWhere = vbNullString
    varWhere = varWhere & "[Leverancier] LIKE " & tmp1 & sVeld & tmp2 & " AND "
    MsgBox varWhere
 
Beste Octafish

Dankjewel voor je reactie.

Maar Het lukt me echt niet.

Als ik jouw code aan een KNOP als Click opdracht dan kan ik inderdaad iets intypen maar dan geeft hij vervolgens het volgende beeld:

555.png

Mijn eigen code was toegepast op het volgende filmpje:

http://www.youtube.com/watch?v=M6XIU5_z-UU

Verder heb ik al andere dingen geprobeerd. Een aantal waarden wil hij niet pakken omdat deze in een "Keuzelijst met invoervak" zitten. en als ik die dan omzet naar een "Keuzelijst" dan kan ik die velden niet blokkeren zowel niet met me.leverancier.locked = true als me.leverancier.enabled is true of via eigenschappen blokkeren.

Heb jij voor mij de oplossing hoe ik een goed zoekformulier kan maken of een andere optie.

Graag hoor ik van je

Alvast bedankt.

Groet Roderik
 
Ik vertrouw liever op de HelpMij oplossingen (meestal de mijne ;) ) dan op YouTube. Volgens mij zijn die ook makkelijker te vinden :). Je hebt denk ik alleen mijn stukje code getest, en niet de rest van je code. Ik zou de complete functie overigens dus anders doen, juist om dit soort problemen te voorkomen.
Code:
Private Function BuildFilter() As Variant
    Dim varWhere As String, tmp As String
    Const conJetDate = "\#dd\/mm\/yyyy\#*"
    
    tmp = """*"""
    varWhere = ""
    If Me.txtleverancier <> vbNullString Then
        varWhere = "[Leverancier] LIKE " & tmp & Me.txtleverancier & tmp
    End If
    If Me.txteigenaar <> vbNullString Then
        varWhere = varWhere & " AND "
        varWhere = varWhere & "[Contract eigenaar] LIKE " & tmp & Me.txteigenaar & tmp
    End If
    If Me.txtDatef <> vbNullString Then
        varWhere = varWhere & " AND "
        varWhere = varWhere & "([Einddatum]>= " & Format(Me.txtDatef, conJetDate) & ")"
    End If
     If Me.txtDatet <> vbNullString Then
        varWhere = varWhere & " AND "
        varWhere = varWhere & "([Einddatum]<= " & Format(Me.txtDatet, conJetDate) & ")"
    End If
    
End Function
Oftwel: voeg de AND pas toe als je hem nodig hebt, en niet eerder. Hoef je hem ook niet overbodig weg te halen. Mag je op YouTube zetten deze tip :)
 
Laatst bewerkt:
Beste OctaFish,

Dit keer kom ik er echt niet uit.

Is er misschien een mogelijkheid dat jij het bestand bekijkt en kijkt of je er iets aan kan doen voor mij?

het bestand staat op het volgende dropbox account:

login: accessdatabase@Hotmail.com
ww: database

Alvast bedankt!
 
Ik zal er vanavond naar kijken; ze hebben op mijn werk Dropbox verboden :).
 
Op welk formulier gebruik je de zoekfunctie? Ik zie een formulier Zoeken (met een nodeloos ingewikkelde constructie, want waarom zit daar een subformulier op?) waar je een tekstvak txtSearch op hebt staan, maar je functie gebruikt hele andere tekstvakken. En die zie ik nergens. Dus dan kan het filter natuurlijk nooit goed worden opgebouwd/werken!
 
Ja dat kan kloppen,

Ik heb die codes van andere probeersels denk ik erin staan. Het maakt me niet zoveel uit hoe maar als ik maar ergens een zoek functie krijg voor de gegevens die ik heb staan in dat subformulier zoek. Bij voorkeur iets wat eruit ziet als formulier zoeken.
 
En in de tabel waarin je wilt zoeken zitten geen records, dus dat zoekt ook niet echt lekker, want wat je ook doet: je vindt niks. Kun je niet een voorbeeldje maken met wat dummy gegevens? Ik steek namelijk bij voorkeur geen tijd in tikwerk. Heb meer te doen :).
 
Beste OctaFish,

Bedankt voor je reactie!

Ik ga NU een nieuw bestand uploaden met dummy records.
 
Gisteren geen tijd voor gehad, en je zult dus tot vanavond moeten wachten :).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan