Avatar billede kimsand Nybegynder
31. oktober 2014 - 09:37 Der er 4 kommentarer og
1 løsning

Det virker men !

Jeg har opbygget denne SQL som skal sammentælle antallet af hver mødekode i et postsæt.

Den er lavet sådan her, så jeg ikke skal ind og rette på en form hvis vi får andre mødekoder.

Den finder de mødekoder jeg har i mødekode tabellen, og tæller så samtidig hvor mange der er af hver af dem i postsættet.

Jeg kan også udbygge forespørgslen med et periode kriterie eller andet jeg får brug for.

Det virker som det skal, men det går utroligt langsomt, selv i et postsæt med kun 120 poster tager det 15-20 sekunder at indlæse den fortløbende form som er lavet på baggrund af forespørgslen.

Her kommer SQL sætningen. Den er ret indviklet( syns jeg :) ), men det virker som det skal.

SELECT DISTINCT DT_modekode.IDmodekode AS modek, DT_modekode.modekode, DT_modekode.beskrivelse, DCount("IDmodekode","DT_borgervaerkstedskalender","IDmodekode=" & [modek] & "AND IDborger=[Forms]![FM_valgt_borger]![IDborger]") AS antalmodekode
FROM DT_modekode, DT_borger INNER JOIN DT_borgervaerkstedskalender ON DT_borger.IDborger=DT_borgervaerkstedskalender.IDborger
WHERE (((DT_borger.aktiv)=True))
ORDER BY DT_modekode.IDmodekode;

Er der evt en anden måde, som eksekverer hurtigere, at lave sådan en sammentælling på som kan være dynamisk så den kan sammentælle i én tabel på baggrund af værdier der står i en anden tabel.
Avatar billede terry Ekspert
31. oktober 2014 - 09:50 #1
Problem is very likely DCount()

Not knowing anything about your tables/data its hard to make a suggestion as to how it could be done to work faster

I would think it very possible nto make a query which finds the records you want from the two JOINED tables.
Then make a new query which groups on modek,  and beskrivelse
and then using count(*) instead of DCount to count how many of each there are.
Avatar billede kimsand Nybegynder
31. oktober 2014 - 10:27 #2
Hey Terry. TY for your answer.

I had a nagging feeling it was dcount, as its reputation is not great on the internet :)

I was just wondering if there where some kind of general optimized SQL tip regarding counting values in a recordset.
Avatar billede terry Ekspert
31. oktober 2014 - 10:34 #3
yes, use grouping and count
Avatar billede kimsand Nybegynder
31. oktober 2014 - 10:38 #4
Great solution...

TY terry. First create query to create the recordset which has the records with modekode, query the recordset and group, use antal to count the instanses of each modekode.

Its superfast, and as an added bonus i don't have to show the mødekoder that has no instanses in the recordset, but only the ones with has actual been used :)

You're good.

SELECT F_bogermodeliste_paa_borger_dato.[IDmodekode] AS modek, Count([modek]) AS tal
FROM F_bogermodeliste_paa_borger_dato
GROUP BY F_bogermodeliste_paa_borger_dato.[IDmodekode]
ORDER BY F_bogermodeliste_paa_borger_dato.[IDmodekode];
Avatar billede terry Ekspert
31. oktober 2014 - 11:38 #5
:-)
Thanks for the points
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

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