Avatar billede Kim Neesgaard Seniormester
03. december 2002 - 15:20 Der er 10 kommentarer og
1 løsning

RecordSource for en rapport

Jeg har en rapport med navnet rptIPGReport, som jeg gerne vil tildele en dynamisk RowSource og den ville jeg mene skulle se ud som følger:

Dim stDocName As String

stDocName = "rptIPGReport"
Reports!rptIPGReport.RecordSource = ReportSQL
DoCmd.OpenReport stDocName, acPreview

ReportSQL er en SQL sætning, der virker i en listbox på samme formular - denne ser således ud:

lstNotifications.RowSource = ReportSQL

Når jeg kører rapporten, får jeg beskeden, at rtpIPGReport enten er misspelled eller den refererer til en rapport, der ikke er åben eller ikke eksisterer. Det er jo rigtigt, at den først åbner i næste linie, men er det ikke muligt at bruge RowSource på denne måde? Jeg har også prøvet at bruge SQL sætningen som en parameter til OpenReport, men det synes den heller ikke at acceptere.
03. december 2002 - 15:56 #1
Du kan kun ændre en rapports Recordsource hvis den er i Design-visning.
Du kan derfor starte med at skrive:

Dim stDocName As String
stDocName = "rptIPGReport"
docmd.Openreport stDocName, acViewDesign
Reports!rptIPGReport.RecordSource = ReportSQL
docmd.Close acreport stdocname,acSaveYes
DoCmd.OpenReport stDocName, acPreview



Men spørgsmålet er, om du ikke kan gøre det nemmere. Er det ikke blot et spørgsmål om, at du skal bruge den samme forespørgsel - blot med forskellige kriterier?

Alternativt kan du ændre din forespøgsel inden udskriften
03. december 2002 - 15:57 #2
...ups fik trykket UDFØR inden jeg var færdig!

Dim stDocName As String
stDocName = "rptIPGReport"
Currentdb.Querydefs("ReportSQL").SQL = "Select * From....."
DoCmd.OpenReport stDocName, acPreview
03. december 2002 - 15:58 #3
PS: Den sidste løsning kræver reference til DAO
Avatar billede Kim Neesgaard Seniormester
03. december 2002 - 18:54 #4
Ja - jeg skal bruge den samme forespørgsel, men mhp. at åbne forskellige brugerspecifikke tabeller. Jeg har prøvet din første løsning og det fungerer perfekt! Mange, mange tak!!!
Avatar billede Kim Neesgaard Seniormester
12. maj 2003 - 14:40 #5
Når flere brugere er på databasen giver løsning 1 en forkert visning, så jeg afprøver nu løsning 2 og har to spørgsmål:

1/ Skal 3. linie ikke være
Currentdb.Querydefs(stDocName).SQL = "Select * From....."?

2/ Jeg har tilføjet en VB reference: Microsoft DAO 3.5 Object Library men får ved kørsel meldingen: Item not found in this collection. Er det en forklert reference?
12. maj 2003 - 14:46 #6
Hej Kim,

Jeg tror, at spm 2 falder tilbage på spm 1.

Din kode bør se nogenlunde således ud:
Dim stDocName As String
Dim stQueryName as String
stDocName = "rptIPGReport"
stQueryName  = "Navn på den forespørgsel, som danner rapporten"
Currentdb.Querydefs(stQueryName).SQL = "Select * From....."
DoCmd.OpenReport stDocName, acPreview

Querydefs().SQL... ændrer SQL'en i en given forespørgsel.
Avatar billede Kim Neesgaard Seniormester
12. maj 2003 - 15:39 #7
Jeg er ikke sikker på, hvad

stQueryName  = "Navn på den forespørgsel, som danner rapporten"

er - hvor finder jeg/navngiver den?
12. maj 2003 - 15:43 #8
Hvis du åbner din rapport i designvisning, så angive/aflæses det i den egenskab, som hedder Postkilde (RecordSource).
Hvis der kun står et tabelnavn, bør du lave en forespørgsel og angive denne i stedet. Det er så det navn, som skal angives i stQueryName.
Avatar billede Kim Neesgaard Seniormester
12. maj 2003 - 15:50 #9
Dvs. indholdet af denne postkilde er i princippet helt ligegyldigt, da man laver det om lige efter? Den skal bare være der for at man kan ændre den?
12. maj 2003 - 15:56 #10
hmm, sådan kan du godt se det...eller gøre det.

Postkilden kan enten indeholde navnet på en tabel eller en forespørgsel, eller postkilden kan indeholde en SQL Streng.
Men i princippet kan man ikke ændre værdien af egenskaben Postkilde efter at rapporten er åbnet. Derfor skal der i Postkilde f.eks. stå én bestemt forespørgsel. Inden rapporten åbnes kan man så ændre SQL'en af den forespørgsel eller man kan åbne rapporten med et givent filter (Where-kriterie)

Så det er i princippet ikke Egenskaben "Postkilde", man ændre. Man ændre den forespørgsel, som rapporten peger på.

Hvis det var en formular, kunne du gøre det samme - men her har du også mulighed for at ændre Egenskaben mens formularen er i luften. Dvs, at da behøver du ikke at ÆNDRE en forespørgsel, men kan i stedet skifte mellem flere forskellige.

Kan du følge med?
Avatar billede Kim Neesgaard Seniormester
14. maj 2003 - 16:18 #11
Ja - jeg kan godt se det! Imidlertid får jeg meldingen 'Item not found in this collection' - er det Microsoft DAO 3.5 Object Library, den er gal med eller skal der mere til?
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