Avatar billede Mortimer12 Nybegynder
27. februar 2012 - 11:04 Der er 11 kommentarer og
1 løsning

Access-query: år i kolonner

Lad os sige jeg har en tabel som denne:

id (int)    country(string)    amount (int)    year(int)

Data i tabellen er kombinationer af country and year, så eksempelvis er der fem records med Danmark med 5 forskellige år og amounts.

Er der en måde at få listet årene som kolonner således at landene kan stå som rækker og alle landes tal for et givent år står under hinanden?

Men kan lave det i en PivotTable, men den er ikke til at formattere, så den bliver pæn og det skulle den gerne være :)

Ethvert forslag modtages!!
Avatar billede Slettet bruger
27. februar 2012 - 11:07 #1
Du skal lave en krydstabuleringsforespoergsel!~)
Avatar billede Slettet bruger
27. februar 2012 - 11:10 #2
Noget i den her retning!~)

TRANSFORM Sum(DinTabel.Amount) AS SumOfAmount
SELECT DinTabel.Country
FROM DinTabel
GROUP BY DinTabel.Country
ORDER BY DinTabel.Country, DinTabel.Year
PIVOT DinTabel.Year;
Avatar billede Mortimer12 Nybegynder
27. februar 2012 - 11:11 #3
Ja, Crosstab kan vise det jeg skal bruge, men jeg glemte at skrive, at hvis det kan lade sig gøre, skal man gerne kunne rette i det. Men det er det nok ikke.
Avatar billede mugs Novice
27. februar 2012 - 11:21 #4
"alle landes tal for et givent år står under hinanden?"

Så er du nødt til at gruppere dine data, og så kan du ikke rette i data!
Avatar billede Mortimer12 Nybegynder
27. februar 2012 - 11:21 #5
Ville man kunne nå (næsten) samme resultat ved at have en tabel ved siden af med år? - En mellemliggende meta-tabel så at sige.
Avatar billede Mortimer12 Nybegynder
27. februar 2012 - 11:24 #6
Når jeg skriver under hinanden, men jeg i hver sin row. Der skal ikke grupperes noget:


Kolonner: Country 2010 2011 2012 osv.

En record ser således ud:

Danmark Amount2010 Amount2011 Amount2012
Germany Amount2010 Amount2011 Amount2012
Avatar billede Slettet bruger
27. februar 2012 - 11:45 #7
Hvis du laver din krydstab og bygger en formular paa den, saa kunne du paa f.eks. aar 2010 feltet ligge flg. kode:

Private Sub Ctl2010_DblClick(Cancel As Integer)
Dim strUpdate As String
strUpdate = "UPDATE DinTabel SET DinTabel.Amount = " & InputBox("Indtast beloeb:") & " WHERE  (((DinTabel.Country) = '" & Me.Country & "') AND ((DinTabel.[Year]) = 2010));"
DoCmd.SetWarnings False
DoCmd.RunSQL strUpdate
DoCmd.SetWarnings True
Me.Requery
End Sub
Avatar billede Mortimer12 Nybegynder
27. februar 2012 - 13:07 #8
Det kunne måske godt bruges. Det prøver jeg lige at lave et testforsøg med. Tak indtil videre :)
Jeg vender tilbage!
Avatar billede Mortimer12 Nybegynder
27. februar 2012 - 14:47 #9
Nu har jeg leget lidt med dig, men medmindre jeg overser noget, så er det jo knapt så anvendeligt, nu brugerne skal kunne tilføje år. Selve queryen kan fint nok få 2013 med, men formen er jo ikke i udgangspunktet dynamisk. Det er lidt mere omstændigt at lave den dynamisk også.
Avatar billede Mortimer12 Nybegynder
27. februar 2012 - 14:51 #10
Håber der en omvej, for ellers fungerer løsningen faktisk supergodt.
Avatar billede Slettet bruger
27. februar 2012 - 15:18 #11
hvis den f.eks. viser de sidste 5 aar, saa kunne man godt lave et eller andet, saa forespoergslen viser aar 1 til 5 ud fra det aar man er i og saa kunne man oversaette etiketter og forespoergsel til at vise et aarstal..
Avatar billede Mortimer12 Nybegynder
23. marts 2012 - 21:24 #12
Smid svar, så får du 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