Kruistabel in formulier

Status
Niet open voor verdere reacties.

Sytse1

Gebruiker
Lid geworden
9 aug 2007
Berichten
584
Office versie
miDer
Wellicht kan iemand mij op weg helpen met het volgende probleem.

In een tabel is een veld SoortVerlof. In dit veld kunnen zes verschillende letters ingevuld worden: v,b,z,d,t,o
In de kruistabel is het veld Soortverlof (Totaal = Group By en Kruistabel = Kolomkop)
Bij het uitvoeren toont de kruistabel keurig voor elke letter een kolom met als kolomkop de betreffende letter en de som van het aantal uren.
Als ik een formulier of rapport maak gebaseerd op de kruistabel wordt alleen de dan aanwezige letters als veld in het formulier gezet.
Als b.v. er in het veld SoortVerlof niet de letter o (voor overige) is ingevuld, is dit veld bij het opnieuw openen van het formulier niet zichtbaar.
Terwijl het inmiddels met de uren en met de letter o is ingevuld.
In het formulier heb ik nu zelf de zes velden waar de letters in kunnen voorkomen gezet.
Als het formulier wordt geopend staan de velden keurig met de cijfers gevuld.
Alleen in het vorige geschetste voorbeeld van de letter o staat dan #Naam?
De letter komt niet in de kruistabel voor.
Dit staat natuurlijk behoorlijk slordig.
Om middels vba in lege velde b.v. 0 te zetten is niet mogelijk omdat een gebonden snapshot veld niet bewerkt kan worden.
Het lege veld met #waarde? kan ik niet uitlezen.
kruistabel.jpg
Vraag: kan ik het veld van de letter o (en eventueel een ander niet met een letter gevuld veld) niet zichtbaar maken. zo ja op welke manier.
Bij voorbaat dank voor het meedenken.
 
Laatst bewerkt:
Heel lang verhaal voor een simpele oplossing :). Een kruistabel laat in beginsel de kolommen zien die waarden bevatten. Maar als je een tabel net gaat vullen, heb je niet in alle kolommen een waarde, zoals je nu merkt.een bekend voorbeeld van dit probleem is een kruistabel die waarden per maand laat zien in een jaar; pas in december heb je data voor alle maanden. En toch wil je in je kruistabel/formulier alle maanden zien.
De oplossing is dus, zoals ik al zei, simpel: zet in het veld dat je gebruikt als kolomwaarde in de eigenschappen alle mogelijke kolommen. In jouw geval zet je daar:
PHP:
v;b;z;d;t;o
dan krijg je dus altijd alle kolommen te zien, ook als ze leeg zijn. (Vergeet de dubbele quootjes niet ;) )
 
Beste OctaFish,

Het zal simpel zijn. Maar niet voor mij. Het veld is geen keuzelijst met invoervak. De gebruiker vult zelf in een v of b enz. in.
Waar ik de "kolomwaarde in de eigenschappen alle mogelijke kolommen" kan invullen kan ik niet vinden.
In de tabel heb ik aangegeven wat er ingevuld moet worden.
TblSoortverlof.jpg

Wellicht kan je me wat verder op weg helpen.
bvd
Sytse
 
Je kijkt op de verkeerde plek. Sowieso zou ik voor dit veld wel degelijk een keuzelijst met invoervak maken (gebaseerd op <Lijst met waarden>) want dat is makkelijker te beheren. Maar wat ik bedoel is dat je in de query de eigenschappen van het veld dat je als kolomwaarde gebruikt aanpast. Daar kan je overigens wel de string voor gebruiker (zonder ‘or’) die je nu hebt.
 
Ik had/heb dit al op allerlei manieren in de kruistabelquery uitgeprobeerd maar kreeg foutmelding dat de “” of de ; niet juist waren.
De omzetting naar een keuzelijst met waarden is geen probleem maar dan heb ik nog steeds hetzelfde probleem.
Tenzij ik dan wel de instelling alle kolommen kan raliseren.
Ik ga het proberen.
 
De “” komen door de iPad; die gelden niets als aanhalingstekens. Je moet deze ("") gebruiken. Het probleem komt ook niet door het veld (tekst of keuzelijst) want dat maakt niet uit. Het gaat puur om de eigenschap <Kolomkoppen> van het veld in de query.
 
Ik antwoorde via de ipad. De laptop was even niet voorhanden.
 
Nogmaals: in je query-ontwerp moet je op het veld dat je als Kolomkop gebruikt rechtsklikken, en dan klik je op <Eigenschappen>. Vervolgens zie je als derde optie staan: <Kolomkoptekst>. En daar zet je deze string: "v";"b";"z";"d";"t";"o".
En dan zie je dus alle kolommen, ongeacht of er wat in staat of niet.
 
OctaFish, weer geweldig bedankt.
Nooit van deze optie geweten. (Maar er zijn zat zaken die ik nog niet weet.)
Ik heb ook nergens (gegoogld) deze uitleg kunnen vinden.
Tot de volgende vraag.
Sytse
Learning all the time
 
Is ook lastig te vinden, die optie. Zeker als je hem niet weet :). In kruistabellen op basis van kolommen met maandnamen doe ik het ook altijd handmatig. Doe je dat niet, dan beginnen je kolommen met April, Augustus, December, Februari etc. Terwijl je toch echt met Januari en Februari wilt beginnen. Dus dan zet ik dit in de kolomkoppen: “Januari”; “Februari”; “Maart”; “April”; “Mei”; “Juni”; “Juli”; “Augustus”; “September”; “Oktober”; “November”; “December”. Dan krijg ik de maanden ook in de kruistabel in de goede volgorde.
 
Als ik zie staan kolomkoptekst denk ik dat je een willekeurige tekst boven je kolom kan zetten.
Niet aan de inhoud van het veld.
 
Dat moet je maar eens proberen, krijg je rare resultaten :). Een kruistabel maakt kolomkoppen op basis van de inhoud van de velden. Elke unieke waarde krijgt een eigen kolom (vandaar Group By). Elke tekst die je zelf toevoegt, maakt weliswaar een kolom aan, maar omdat in die fantasiekolom geen waarde staat, blijft de kolom leeg. Dat is ook de truc die je dus (in dit geval nuttig) gebruikt, omdat je kolommen toevoegt die op het moment nog niet bestaan, maar waarvan je zeker weet dat ze in de nabije toekomst wél waarden zullen bevatten. Dus een kolom ‘Oktober’ heeft nu nog geen zin, maar volgende maand wel. En dan staat die dus alvast in de query.

Omdat je in je formulieren zonder trukendoos geen variabele koppen kunt maken, moeten de koppen dus al in de query zitten als je een rapport of formulier maakt op basis van een kruistabel. Dat is ook een reden om het zo te doen: je weet namelijk al precies hoeveel kolommen je gaat krijgen in het definitieve resultaat. En daar pas je dan je formulier/rapport al op aan.
 
Je hebt me weer verder op weg geholpen.
De tabel gaat over 13 jaar gegevens.
Er is dus nog wat mee te gochelen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan