Avatar billede bbkdk Seniormester
28. marts 2008 - 11:13 Der er 7 kommentarer og
1 løsning

Åbn rapport med filter fra SQL

Jeg har en rapport (RptUdskrift)der åbner fra kommandoknapper i en formular. Rapportens udseende er altid den samme, men postkilden består af forskellige SQL sætninger. Det eneste der ændres er det antal poster, der skal vises (f.eks 5, 3 eller 10), eller om det er et antal tilfældige poster.

Et eksempel på postkilden i en rapport:

SELECT TOP 5 Data.ID, Data.Kontonr, KONTI.konto, Data.Dato, Data.Bilagsnr, Data.tekst, Data.Beløb, Data.Momskode, Data.Momsbeløb
FROM KONTI RIGHT JOIN Data ON KONTI.Kontonummer = Data.Kontonr
WHERE (((Data.Kontonr)=[Forms]![Kontospecifikation]![Kontonr]))
ORDER BY Data.Kontonr, Data.Beløb DESC;

Det betyder, at jeg har oprettet ca. 10 rapporter, hvor postkilden er en anelse forskellig. Og der kan nemt komme flere rapporter til. Det bliver hurtigt lidt uoverskueligt.

Det er min opfattelse, jeg må kunne indsætte SQL-sætningerne på kommandoknappens VedKlik hændelse, således at jeg kun skal bruge en formular, der så ændrer postkilde alt efter, hvilken kommandoknap jeg aktiverer.

Jeg mener det er noget med RunSQL, men hvordan ser hele Visual Basic-sætningen lige ud? Og kan det overhovedet lade sig gøre?
Avatar billede bbkdk Seniormester
28. marts 2008 - 11:15 #1
Sludder - jeg mente naturligvis, at jeg kun skal bruge én rapport
Avatar billede mugs Novice
28. marts 2008 - 12:01 #2
SQL = "Din sql-sætning"
docmd.runsql SQL
Avatar billede bbkdk Seniormester
28. marts 2008 - 12:19 #3
Hej Mugs !!
Kan du give mig et eksempel på, hvordan hele Visual Basic sætningen skal se ud, for at et klik på kommandoknappen i formularen åbner rapporten "RptUdskrift", og anvender den angivne SQL sætning som postkilde. Det svarer vel lidt til, at der anvendes et filter på tabellens poster.
Avatar billede mugs Novice
28. marts 2008 - 14:10 #4
Avatar billede bbkdk Seniormester
28. marts 2008 - 20:11 #5
Hej Mugs !!!
Jeg ser på dit løsningsforslag, når jeg kommer på arbejde mandag morgen.
Så jeg melder tilbage snarest.
Avatar billede mugs Novice
28. marts 2008 - 20:25 #6
OK - og god weekend :o)
Avatar billede bbkdk Seniormester
31. marts 2008 - 10:12 #7
Hej Mugs !!
Håber du har haft en god weekend - og så det svære:
Jeg har lavet en VedÅbning hændelse på rapporten (Test):

Private Sub Report_Open(Cancel As Integer)
Me.RecordSource = grst.Name
End Sub

Så har jeg oprettet et standardmodul (Module1):

Option Compare Database
Public grst As Recordset
Public Sub testrapport()
Set grst = CurrentDb.OpenRecordset("SELECT TOP 10 Data.ID, Data.Kontonr, KONTI.konto, Data.Dato, Data.Bilagsnr, Data.tekst, Data.Beløb, Data.Momskode, Data.Momsbeløb FROM KONTI RIGHT JOIN Data ON KONTI.Kontonummer=Data.Kontonr WHERE (((Data.Kontonr)=Forms!Kontospecifikation!Kontonr)) ORDER BY Data.Kontonr, Data.Beløb DESC")

DoCmd.OpenReport "Test", acwiewPrewiew
grst.Close
Set grst = Nothing
End Sub

Men uanst hvordan jeg åbner rapporten "Test" får jeg en fejlmeddelelse:
"Method or datamember not found", og .Name i hændelsesproceduren VedÅbning, er markeret.

Egenskabsarkets Postkilde til formularen er ikke udfyldt.
Som du ser er der en WHERE sætning i SQL'en. Den henviser til de fundne poster i en formular, der er åben.

Men uanset om den havde åbnet korrekt, synes jeg, at der er et problem. Skal den SQL sætning, der angiver, hvilke poster, der skal findes, ikke stå på knappens VedKlik hændelse. Ellers ændrer den sig vel ikke alt efter, hvilket knap der klikkes på?

En rigtig god løsning på problemet kunne være, hvis det var muligt at angive det antal poster, der skal findes, i den SQL sætning, der står i Postkilden, som jeg har angivet først i mit spørgsmål. Dvs. hvis det kunne angives, at "TOP 5", i stedet skulle være "[indtast ønsket antal]". Så ville der ikke skulle oprettes en knap for hvert antal, men kun for hver kategori (Største, mindste, tilfældige m.v.).

Og så til sidst mugs - min database fungerer fint, med de begrænsninger, der ligger i, at der skal være en rapport og en knap for hvert ønsket antal.
Så brug ikke for meget tid på sagen. Du har såmænd allerede tjent de udlovede points.
M.v.h.
Knud
Avatar billede bbkdk Seniormester
17. april 2008 - 12:00 #8
Hej Mugs!!
Jeg kigger på mulighederne.
Points til dig.....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester