31. januar 2001 - 14:17Der er
10 kommentarer og 1 løsning
udskrift formular
Jeg har en form \"key figures\" som laver 46 dlookup funktioner. Det tager derfor ca. 1-3 min at beregne denne. Problem : når jeg via en knap vil udskrive denne tager det lige så lag tid ( som om den laver en requery) !!! mit script er som flg. :
Private Sub Command131_Click() DoCmd.PrintOut acPages, 1, 1, acHigh, 1 End Sub
hvorfor tager det så lang tid. på mindre maskiner får jeg ofte en time out på printeren. ( små maskiner = < 500 MhZ )
DLookup er en RET langsom funktion... når man kun bruger den en eller to gange i en funktion mærker man det ikke.... men 46 !!!!! Pheeew..... :-)
Jeg vil foreslå dig at finde de ting du nu finder via DLookup, ved hjælp af oprette nogle recordsets og søge disse igennem i stedet.... det er MEGET hurtigere....
Jeg vil godt hjælpe dig hvis du ikke umiddeltbart kan finde ud af det....
Prøv evt. at skrive én af dine DLookup sætninger hér så skal jeg vise dig hvordan den ser ud på den anden måde....
Jeg tror i øvrigt ikke det vil gøre nogen forskel at lave en rapport direkte....
Det har ganske sikkert også noget at skulle have sagt at du har kriterier i forespørgslen.... men lad os nu prøve og se hvad dette kan give...
Dim dbs as database dim rstSwd as recordset \'Din forespørgsel placeres hér - hvis du har flere forespørgsler blandt de 46 dlookup\'ere så skal du også dim\'e et recordset til dem.
set dbs as currentdb set rstSwd as dbs.OpenRecordSet(\"SumOfSum write down\",dbopensnapshot)
rstSwd.MoveFirst \'Jeg går ikke ud fra at der er flere poster i forespørgslen siden du ikke specificerer noget kriterie i din dlookup, kan der kun være en post - eller hva\' ?
=rstSwd![sum gr 0 down] \'Linien der returner værdien ligesom dlookup\'en gjorde...
\'Slut af med at rydde op
rstSwd.close set rstSwd = Nothing set dbs = Nothing
Det er stilen..... du opretter altså et recordset for hver forespørgsel eller tabel du har brug for.... dbopensnapshot er vist en smule hurtigere end standard metoden.
Husk at .MoveFirst på hvert recordset og returner så værdien ved at skrive \"Navnet på recordset\"!\"Navnet på feltet\"
Jeg vil prøve at dim alle 46 forespørgsler da de alle er forskellige. Når dette er gjort vil jeg gerne vide hvordan man overfører dette modul til de 46 unbound object felter..???
Data i disse kan jo kun laves via udtryksgenerator..
undskyld min sene tilbagemelding ...har droppet det til fordel for anden opgave. jeg accepterer dit svar uden at have prøvet det og håber at måtte vende tilbage såfremt jeg har kommentarer senere...
Ærgeligt at du ikke har haft tid til at prøve det af.... det kunne være spændende/sjovt at se hvilken tidsforskel det ville give.... Jeg håber du får tid/lyst/mulighed for at afprøve det på et tidspunkt... I såfald må du MEGET gerne komme med en kommentar vedr. resultatet.... som sagt, kunne det være meget interessant at vide....
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.