Filter för rapport Testa såhär: Jag testade men tyvärr inte. Så här brukar jag göra. Hoppas du förstår hur jag menar. Såhär fungerar för mig: Du kan också lägga en sql-sats i händelsen öppna för rapporten som ger kontrollkälla. När jag för många år sen gjorde access-rapporter gjorde jag såhär: Jag brukar göra så för att få mina rapporter dynamiska dvs. med obegränsat urval så brukar jag bygga upp sql-satsen i vb koden. (Dynfraga är en accessfråga som jag skapat manuellt i frågeverktyget)Filter för rapport
Jag har en rapport som baseras på en fråga. Rapporten öppnas från ett formulär ”Rapportgenerator”. I detta formulär finns en kombinationsruta med personnamn.
-Om jag har valt ett personnamn vill jag att alla poster som innehåller detta personnamn ska visas i rapporten.
-Om inget val har gjorts i kombinationsrutan ska alla poster oavsett namn visas i rapporten.
Jag har skrivit följande villkor för om Personnamnet är ifyllt och det fungerar:
OOM([Formulär]![Rapportgenerator]![Personnamn]<> "";[Formulär]![Rapportgenerator]![Personnamn])
Tyvärr vet jag inte hur jag ska skriva villkoret om Personnamnet inte är ifyllt?Sv: Filter för rapport
OOM([Formulär]![Rapportgenerator]![Personnamn]<> "";[Formulär]![Rapportgenerator]![Personnamn];"*")
eller såhär:
OOM([Formulär]![Rapportgenerator]![Personnamn]<> "";[Formulär]![Rapportgenerator]![Personnamn];"%")
Kanske kan fungera. Återkom om det inte fungerar så kan jag testa lite...
/JohanSv:Filter för rapport
Inga poster alls vissa om jag skriver "*" eller "%".
Hälsningar
MatsSv: Filter för rapport
I frågans design skriver du på raden Fält:
[Formulär]![Formulärnamnet]![ListrutansKontrollNamn]
Därefter nedan på raden Villkor:
Är Null ELLER [Tabellnamnet].[Fältnamnet]
/ PerSv: Filter för rapport
SOM OOM([Formulär]![Rapportgenerator]![Personnamn]<> "";[Formulär]![Rapportgenerator]![Personnamn];"*")
/JohanSv: Filter för rapport
Dvs. du behöver inte sätta villkoret i designen.
Om du vill göra det lätt för dig kopierar du de två olika sql-satserna som blir från frågedesignen och villkorar med if eller select case.
Me.Recordsource = "SELECT....
/AnnSv: Filter för rapport
<code>
if form_Rapportgenerator!Personnamn = "" then
Me.FilterOn = false
else
Me.FilterOn = true
Me.Filter = "[fältet på rapporten]='" & form_Rapportgenerator!Personnamn & "'"
end if
</code>
i Report_Open..
/FSv: Filter för rapport
Testa att göra följande:
Dim Fråga As QueryDef
Dim q as string
Dim pnr as string
pnr = ""
Set Fråga = CurrentDb.QueryDefs("Dynfraga")
if (not isnull(me.personnrkontroll)) then
pnr = Kund.rpnr='" & me.personnrkontroll & "'"
endif
q = "SELECT Kund.* FROM Kund WHERE " & pnr & ";"
Fråga.sql = q
Sen lägger du till Dynfraga manuellt som record source till rapporten.
Observera att gör du inget urval på personnr så måste du hantera det så att endera lägger du till ett "dummy" where villkor eller så hanterar du så att where inte tas med i sql-frågan.
Lycka till!
/Åsa