Access 2016. Openen rapport met filter

Status
Niet open voor verdere reacties.

KPTPTT

Gebruiker
Lid geworden
2 mrt 2018
Berichten
321
Hallo. Ik heb een Query met een reeks opdrachten. Aan iedere opdracht kunnen maximaal drie verschillende monteurs werken. Bij iedere opdracht in de query staan de namen van de mogelijke drie monteurs (o_Naam Monteur 1, etc.) die aan de opdracht toegewezen kunnen zijn. Ik heb van deze query een rapport gemaakt "Rapport Uitvoerder". Zonder filtering wordt bij iedere opdracht één tot drie namen van de monteur getoond. Dit werkt goed, echter wil ik dat via een keuzelijst (12) in een formulier een keuze gemaakt wordt uit de lijst met beschikbare monteurs c.q. uitvoerders. Er kan slechts één monteur/uitvoerder worden gekozen. Dit werkt ook. Na update c.q. selectie van de monteur in de keuzelijst moet een gefilterd rapport "Rapport Uitvoerder" worden gegeneerd waarbij alle records uit de query moeten worden getoond die behoren bij de naam monteur uit de keuzelijst. De volgende code heb ik hiervoor gebruikt.

Code:
DoCmd.OpenReport "Rapport_Uitvoerder", acViewPreview, , "[o_Naam Monteur 1]=" & Me.Keuzelijst12 Or "[o_Naam Monteur 2]=" & Me.Keuzelijst12 Or "[o_Naam Monteur 3]=" & Me.Keuzelijst12

Opm: Me.Keuzelijst12 geeft een ID waarde van de monteur op bv. 31.

Met één monteur werkt de filtering goed en wordt het gefilterde rapport getoond maar met twee of drie monteurs wordt een foutmelding gegeven: Fout 13 tijdens uitvoering. Typen komen niet met elkaar overeen. Ik heb zitten puzzelen maar kom er niet uit. Wie kan mij helpen, alvast bedankt.
 
Laatst bewerkt:
Je syntaxis klopt niet, moet zijn:

Code:
DoCmd.OpenReport "Rapport_Uitvoerder", acViewPreview, , "[o_Naam Monteur 1]= " & Me.Keuzelijst12 & " Or [o_Naam Monteur 2] = " & Me.Keuzelijst12 & " Or [o_Naam Monteur 3] = " & Me.Keuzelijst12 & ""

Tardis
 
Top, je hebt mij enorm geholpen. Ik begrijp niet dat de " anders geplaatst moeten worden. Ik dacht "[o_Monteur 2] = " & Me.Keuzelijst12 maar het moet zijn: [o_Monteur 2] = " & Me.Keuzelijst12 & ". Waarom een extra & aan het einde. In ieder geval het werkt en hartelijk dank.
 
Ik begrijp niet dat de " anders geplaatst moeten worden.
Heel simpel, als je de code een klein beetje herschrijft en een variabele gebruikt, i.p.v. de complete string in een filter (wat ik sowieso aanraad, omdat je dan met debuggen makkelijker kan kijken of er een fout in de code zit)
Code:
Dim sFilter As String
    sFilter = "[o_Naam Monteur 1]= " & Me.Keuzelijst12 _
        & " Or [o_Naam Monteur 2] = " & Me.Keuzelijst12 _
        & " Or [o_Naam Monteur 3] = " & Me.Keuzelijst12
    DoCmd.OpenReport "Rapport_Uitvoerder", acViewPreview, , sFilter

Een tekstfilter als parameter staat altijd tussen dubbele quootjes. De waarde van een keuzelijst (als dat numeriek is) behoeft geen quootjes, die kun je gewoon toevoegen aan een string. Dat gebeurt dus in de opbouw van sFilter. Bij het openen gebruik je dan de variabele, dus daar heb je ook geen quootjes meer nodig.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan