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.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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
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!!!
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?
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.
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.
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.
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?
Synes godt om
Ny brugerNybegynder
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.