30. oktober 2011 - 17:45Der 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
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.
Synes godt om
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
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.
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.