Avatar billede omn Mester
30. oktober 2011 - 17:45 Der er 9 kommentarer og
1 løsning

Dynamisk tildeling af Record Source før Report run

Jeg har et stort antal reports der hver har sin unikke queries angivet som Record Source. Hvis jeg umiddelbart i forbindelse med OpenReport command kunne tildele querie-name under report Record Source, så kunne jeg eliminere et stort antal Reports og dermed opnå et minimum af vedligehold. Er det muligt med code at indsætte Record Source

Record Source = "MyQueries"
DoCmd.OpenReport "ElapseTime", acPreview.
Vh. OMN
Avatar billede mugs Novice
30. oktober 2011 - 19:27 #1
Du kan ikke ændre en rapport's postkilde, når rapporten ikke er åbnet.
Omvendt kan du heller ikke ændre postkilden når udskrivningen er startet.
Avatar billede Slettet bruger
31. oktober 2011 - 02:05 #2
En løsning er at bruge en 'pladsholder' query for alle de queries der skal anvendes af en given raport.

Raporten skal så have denne som sin datakilde:

Sub openReportWithQueryName(reportName, queryName)
    CurrentDb.QueryDefs.Delete "PladsholderQ"
    CurrentDb.CreateQueryDef "PladsholderQ", "select * from " & queryName
    DoCmd.OpenReport reportName, acViewPreview
End Sub

----

En anden løsning er at forene queries i den query der skal være datakilde - tilsættende et ekstra query identifikation:

select 1 as qid, * from Q1
union
select 2 as qid,* from Q2

og bruge den med where betingelse i openreport.

----

En tredje løsning, som ikke er "særlig køn", er indledende at åbne raporten i design mode og ændre datasource 


docmd.OpenReport rapName,acViewDesign
Reports(rapName).RecordSource="qName"
docmd.Save acReport,rapName
docmd.close acreport,rapName
docmd.openreport rapName,acPreview
Avatar billede hugopedersen Nybegynder
31. oktober 2011 - 07:45 #3
Da jeg for snart mange år siden fandt den begrænsning i Access, gjorde jeg det at jeg i de rapporter det var aktuelt lavede det så jeg i rapporternes OnOpen event skrev
Me.RecordSource = ReportRecordsource

ReportRecordsource er så en global variabel som jeg sætter værdien på inden jeg kalder DoCmd.OpenReport

Det har altid virket - om det er elegant ved jeg ikke rigtig.
Avatar billede omn Mester
05. november 2011 - 15:02 #4
Tak - det er alletiders.
Vh. OMN
Avatar billede omn Mester
05. november 2011 - 15:04 #5
Tak - det er alletiders.
Vh. OMN
Avatar billede omn Mester
05. november 2011 - 15:08 #6
Tl HugoPedersen
Tak - det er alletiders, men hvordan kam jeg tildele point.
Vh. OMN
Avatar billede omn Mester
05. november 2011 - 15:09 #7
Til brugerekspert.
Tak - jeg vil gerne tildele point her også, men hvordan.



Vh. OMN
Avatar billede mugs Novice
05. november 2011 - 15:12 #8
Du er den eneste der har lagt svar. Du må vente på, at de brugere du vil tildele point har lagt svar.
Avatar billede hugopedersen Nybegynder
05. november 2011 - 19:36 #9
Jeg har ikke fået besked om indlæg før lige nu her i dag - det sker ret tit synes jeg men.....

Jeg laver dette som et svar.
Avatar billede hugopedersen Nybegynder
07. november 2011 - 07:25 #10
Takker for point.....
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