sortering kruistabel

Status
Niet open voor verdere reacties.

Folkert220

Gebruiker
Lid geworden
7 dec 2015
Berichten
14
Hallo,

Ik heb een kruistabel gemaakt aan de hand van een query met in de kolommen kwartaalnamen. De kwartaalnamen zijn in een aparte tabel opgenomen met autonummering als primaire sleutel. Als ik nu in de kruistabel sorteer op de kwartaalnamen dan klopt de volgorde niet. Als ik sorteer op de primaire sleutel dan klopt de volgorde wel maar ben ik de naam van het kwartaal kwijt. Is het mogelijk om te sorteren op de primaire sleutel maar tegelijk de kwartaalnaam te tonen in de kolomnaam? Ik weet dat de velden te sorteren zijn met kolomkoptekst maar het heeft mijn voorkeur om dit dynamisch te doen.

gr,
Folkert

edit: het gaat om access 2010
 
Dus bij jou ziet de tabel er (om mij onduidelijke redenen) ongeveer zo uit:
1 - Kwartaal 3
2 - Kwartaal 2
3 - Kwartaal 4
4 - Kwartaal 1
?
Ik weet dat de velden te sorteren zijn met kolomkoptekst maar het heeft mijn voorkeur om dit dynamisch te doen.
En dan verwerp je ook nog eens de enige optie :). Overigens schat ik de kans dat er kwartalen verdwijnen of bijkomen nou niet bepaald heel hoog in..... Wat is er op tegen om ze even in te typen?
 
Dank voor je reactie OctaFish. De reden is dat ik het dynamisch wil doen is omdat het er wel heel veel zijn, het gaat namelijk over heel veel jaren en in de toekomst komen daar uiteraard nog kwartalen bij. Daarnaast heb ik de optie van het intypen al geprobeerd. Ik doen dan: "waarde1","waarde2","waarde3" etc. Ik krijg dan alleen een foutmelding: De syntax van de expressie die u heeft opgegeven is ongeldig. Misschien komt doordat ik nergens heb/kan opgeven voor welk veld deze waardes zijn?
 
Ik begrijp je suggestie dat ik de jaren natuurlijk zou kunnen onderbrengen in een subtabel en daarmee het invoerwerk flink kan terugbrengen. Dat zou ik inderdaad kunnen doen maar dan zit ik helaas nog steeds met die foutmelding.
 
Snap je je eigen vraag wel?
Ik heb een kruistabel gemaakt aan de hand van een query met in de kolommen kwartaalnamen.
Een kruistabel is een query, en bestaat uit minimaal 3 velden: een rijkop, een kolomkop en een waardeveld. Je kwartaalnamen heb je gedefinieerd alskolom kop. Dan kun je met de beste wil van de wereld nooit meer dan 4 kolommen krijgen, want zoals ik al zei: er zitten maar 4 kwartalen in een jaar. Vandaar ook de naam kwartaal.
Dus wat ben je aan het maken?
 
Om precies te zijn zijn de kwartalen op de volgende manier gedefinieerd:

kwartaal 1 2014
kwartaal 2 2014
kwartaal 3 2014
kwartaal 4 2014
kwartaal 1 2015
kwartaal 2 2015
kwartaal 3 2015
kwartaal 4 2015
kwartaal 1 2016 etc.

Ik weet dat de kruistabel een query is maar ik heb deze dus weer gebaseerd op een andere query. Een andere oplossing waar ik aan denk als het sorteren niet lukt is om de naam zo te wijzigen dat het jaartal eerst komt, op die manier zou op- of aflopend sorteren wel moeten werken.

Hoop dat het zo duidelijker is. Overigens ben ik erg blij met je hulp. Ook als ik met google zoek naar een oplossing voor een probleem in Access kom ik vaak op een pagina met jou naam terecht. Ik kan mij voorstellen dat anderen dat ook hebben.
 
Je sorteert, met deze velden, alfanummeriek dus "Kwartaal 1 2015" staat ná "Kwartaal 1 2014" en voor "Kwartaal 2 2014" als je dit veld als kolomkop gebruikt. En dat is alleen op te lossen door de query handmatige koppen te geven. Overigens houdt niets je tegen om de query ergens op te slaan en met VBA en de QueryDefs collectie de SQL van de query steeds aan te passen. Daarbij kun je namelijk heel simpel met een recordset een tekststring maken waarin je de kolomkoppen op de gewenste manier samenstelt en waarmee je de complete kruistabelquery definieert. Zoals gezegd: met de QueryDefs pas je dan de SQL van je query aan en dan ben je helemaal klaar.
 
Oke, thanks. Toch iets ingewikkelder dan gedacht maar ik dat ik zo wel voldoende aanknopingspunten heb! Ik ga er even over nadenken.
 
Prima! Ik heb uiteraard zat voorbeelden als je er niet uit komt...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan