Filteren met combobox

Status
Niet open voor verdere reacties.
Ben toch nog een leuke tegen gekomen welke niet werkt op deze filter.

namelijk als de waarde van het veld bijv "01 - V&V" is.
Wat moet ik aanpassen zodat het werkt? Heb wel al het een en ander met " en ' geprobeerd, helaas zonder succes.

edit:
toevoeging code:

Code:
If Me.cbodiv.Value & "" <> "" Then
        If Not sWhere & "" = "" Then sWhere = sWhere & " AND "
        sWhere = sWhere & "[divnaamtekst] = " & Me.cbodiv & ""
    End If

In de cellen staan divisienamen zoals: Directoraat Human Resources
Met spaties, - en ander grut.

Daarbij krijg ik een foutmelding 3075.
 
Laatst bewerkt:
Een veldwaarde als "01 - V&V" is uiterst ongelukkig als je wilt filteren. Als je mazzel hebt, dan trek je nog wel "01 - V" uit de veldwaarde, maar zelfs dat betwijfel ik. En dan nog, daar kun je dan vermoedelijk niet zoveel mee. Al zou je het filter dan wellicht zo kunnen aanpassen dat hij altijd naar het linkerdeel van de veldwaarde kijkt dat identiek is aan het overeenkomende deel van je zoekstring. Met LEFT dus.
Ik heb zoiets wel eens bij de hand gehad bij een functie die records moest ontdubbelen en dan kom je in een veld Bedrijfsnaam bijvoorbeeld ook dat soort rare tekens wel tegen. De oplossing toen was om éérst een bijwerkquery uit te voeren die alle dubieuze tekens (denk hierbij aan &, ' en ") te vervangen door tekst. Dus de veldwaarde "01 - V&V" vervang je door "01 - V ampersand V". Vervolgens filter je op de dan actuele waarden, en na het filteren zet je met een bijwerkquery het ampersandje weer terug.
 
Dan kan ik beter een andere veldwaarde gaan bedenken/overleggen. Dat maakt het weer wat makkelijker. 01 - VV is makkelijker dan 01 - V&V?
Dan zou VV nog eenvoudiger zijn. Gelijk alle spaties en andere dingen eruit halen.
 
Dat lijkt mij een handige oplossing; Access en speciale tekens blijft een hachelijke combinatie. Verkenner trouwens ook :)
 
Geldt dat trouwens ook met : - , / etc?

Heb wel begrepen dat als je een & als tekst wilt, dat je dan && moet plaatsen...


Ik ga even stoeien met de namen.
 
Tekens herhalen doe je bijvoorbeeld voor de string parameters in een SQL opdracht. Zo zal deze regel:
Code:
     Me.Filter = "[Tekst] = "" & Me.Tekstvak & """
niet werken; het dubbele aanhalingsteken is een beschermd teken. Dat moet dus herhaald worden. Je krijgt dan:
Code:
     Me.Filter = "[Tekst] = """ & Me.Tekstvak & """"
Je gaat dat natuurlijk niet in je tabellen zetten; Het bedrijf heet nu eenmaal Proctaat & Gambler, niet Proctaat && Gambler!
 
Dan krijg ik dus:

Code:
If Me.cboFF.Value & "" <> "" Then
        If Not sWhere & "" = "" Then sWhere = sWhere & " AND "
        sWhere = sWhere & "[Tekst] = """ & Me.Tekstvak & """"
    End If

Wat voor zover getest werkt!
 
Nu heb ik een aantal comboboxes die op elkaar door kunnen filteren.
Een van die comboboxxen, Afdelingen, zou gevuld kunnen worden door een selectie van divisies.

Bijv: Na het selecteren van de divisie Human Resource, zie ik alleen de afdelingen die daaronder zitten.
Lijkt denk ik deels op wat ik in een ander topic heb gesteld. Moet ik daar eenzelfde soort constructie gebruiken of is dat in dit geval net anders?
 
Laatst bewerkt:
Dat is niet zo moeilijk, en kan je op 2 manieren doen: met een verwijzing in de tweede keuzelijst naar de gekozen waarde uit de eerste keuzelijst, of met VBA. In het laatste geval moet je de SQL van de tweede keuzelijst opbouwen na het klikken op een keuze op de eerste. De SQL moet dan worden gefilterd worden door die keuze. De SQL wordt dan met VBA toegewezen aan de Rijbron van de tweede keuzelijst.
 
Hallo,

Ik zat met een soortgelijk probleem, en vond de oplossing van Octafish.
En dit werkte na een kleine aanpassing (Moest nl. ook op datum filteren), perfect in mijn geval.
Dit werkte helaas op 2 januari van dit jaar niet meer....heel vreemd :rolleyes:
En omdat dit draadje nog niet gesloten is, is mijn vraag, heb ik dan toch ergens een foutje gemaakt.

Heb wel wat kennis van VBA, maar haal toch veel oplossingen van het internet, en zodoende toch mijn kennis daarin op kan bouwen.
Het stukje (gekopieerde) code van de functie ziet er zo uit:

Code:

Function Filteren()
Dim sWhere As String

If Me.cmbDatum.Value & "" <> "" Then
If Not sWhere & "" = "" Then sWhere = sWhere & " AND "
sWhere = sWhere & "[Datum] = #" & Me.cmbDatum & "#"
End If
If Me.cmbGebied.Value & "" <> "" Then
If Not sWhere & "" = "" Then sWhere = sWhere & " AND "
sWhere = sWhere & "[Gebied]=""" & Me.cmbGebied & """"
End If
If Not sWhere & "" = "" Then
Me.Filter = sWhere
Me.FilterOn = True
Else
Me.Filter = ""
Me.FilterOn = False
End If

End Function

alvast dank,

Bram
 
Het is niet netjes om in een draad van een ander een eigen vraag te stellen, dus wellicht is het beter als je een eigen vraag maakt. Zeker als de aangedragen oplossing niet werkt bij jou. Deze vraag is (vermoed ik) verder wel opgelost, al moet TS hem nog wel op die status zetten. Tenzij hij zelf nog een vraag heeft natuurlijk.
En als je toch een eigen vraag maakt: zet je code dan ook in de CODE tags, dan is hij een stuk leesbaarder :).
 
Het is niet netjes om in een draad van een ander een eigen vraag te stellen, dus wellicht is het beter als je een eigen vraag maakt. Zeker als de aangedragen oplossing niet werkt bij jou. Deze vraag is (vermoed ik) verder wel opgelost, al moet TS hem nog wel op die status zetten. Tenzij hij zelf nog een vraag heeft natuurlijk.
En als je toch een eigen vraag maakt: zet je code dan ook in de CODE tags, dan is hij een stuk leesbaarder :).

Het is achteraf inderdaad niet erg slim geweest, excuses hiervoor.
Ik zal de vraag opnieuw proberen te stellen in een eigen topic. :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan