24. september 2008 - 14:30Der er
11 kommentarer og 1 løsning
Opdatering af tællerværdier
Jeg har nogle data der består af følgende felter CenterID KabineNo UgeNr Total
Sorteret efter CenterID, KabineNo og UgeNr
Nu skal jeg finde differencen mellem Total ugeX og Total ugeX-1 (altså tilvæksten fra foregående uge)
Og det skal helst være noget der er rimeligt optimeret da jeg på nuværende tidspunkt har > 235.000 records for 2007 og 2008 (alle før 2007 har jeg allerede valgt fra)
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
SELECT tblKabin.CenterID, tblKabin.KabinNo, tblKabin.UgeNr, [tblKabin]![Total]-(SELECT TOP 1 Total from TblKabin K WHERE K![CenterID] = [tblKabin]![CenterID] AND K![KabinNo] = [tblKabin]![KabinNo] AND K![UgeNr] < [tblKabin]![UgeNr] ORDER BY K![CenterID] DESC, K![KabinNo] DESC, K![UgeNr] DESC) AS tællerværdier FROM tblKabin;
Det fungerer jo perfekt. Har dog modificeret terry's en smule:
SELECT tblKabine.centerid, tblKabine.kabinenr AS Udtryk1, tblKabine.ugenr, tblKabine.total, [tblKabine]![Total]-(SELECT TOP 1 Total from TblKabine K WHERE K![CenterID] = [tblKabine]![CenterID] AND K![KabineNr] = [tblKabine]![KabineNr] AND K![UgeNr] < [tblKabine]![UgeNr] ORDER BY K![CenterID] DESC, K![KabineNr] DESC, K![UgeNr] DESC) AS tællerværdier FROM tblKabine ORDER BY tblKabine.kabinenr, tblKabine.ugenr;
Har prøvet begge forslag, men de tager simpelthe for lang tid. Og jeg har 8 felter i tabellen jeg skal finde differencen for. Måske skal jeg ud i en midlertidig tabel og så noget VBA til at oprette records.
Well as far as I can see mugs example is the same as mine but with a sort, so there isnt going to be much perfomance difference between them.
"Og jeg har 8 felter i tabellen jeg skal finde differencen for" So the differemce isnt just total?
"native tabeller ligger på en MySQL server" Do you mean the tables are on a MySQL srever? If so then (know very little about MySQL) I would suggest that making a view (query) (if thats possible) on the MySQL Server would go much faster and then make a link to the view from Access.
"Måske skal jeg ud i en midlertidig tabel og så noget VBA til at oprette records." I'll be very surprised if this will be faster. You would (I think) need to loop through a recordset and for each record find the previous week (for center+cabin) and then insert data into a temp table, but you could give it a try.
In my example there is only one 'Total' field but in real life I have 11 fields that I have to calculate the difference from last week to current week So that is going to be quite a task I know :-)
Terry I have mailed you an image of the structure of the table.
Mugs> hvis du vil se strukturen, så skal jeg bruge en email.
Jeg tror jeg fik den kringlet nu. Det er heldigvis sådan at det er mig selv der har programmeret Delphi programmet der danner data på MySQL (det er et program der konverteret ca. 550 paradox tabeller til MySQL - 3 filer fra hvert af vore solcentre + 8 fælles = 20.000.000 records alt i alt) og derfor var det ikke noget problem at lave et par ekstra felter der indeholder previous week og år (lidt overhead i tabellerne men hastigheden er bedre) og så lave 1 query der bygger på 2 subqueries og resultatet er noget jeg kan bruge i en rapport. Så tak til Terry for 'showing me the way' once again :-)
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.