Woorden tellen in een rij

Status
Niet open voor verdere reacties.

Fred F

Gebruiker
Lid geworden
11 jan 2011
Berichten
9
Hallo Mensen,

Wil de woorden tellen in een rij, het zijn de woorden "ja" of "nee" of "ziek".
Weet dat dit gaat in excel met aantal als.
Heb diverse dingen al geprobeerd via dit forum, maar kom er gewoon niet uit.
Wilde de access database toevoegen maar de zip is te groot. 613kb

Kunnen jullie me een duwtje in de goede richting geven zodat ik verder kan met mijn database.
Alvast bedankt voor jullie moeite.
Groetjes Fred
 
Wat bedoel je met 'rij'? accessoires werkt met records en met velden; gaat het om het tellen van het woord in een veld, of in het complete record?
 
Verdere uitleg woorden in rij tellen

Overzicht.jpg
Dit is wat ik bedoel, de woorden ja tellen , nee tellen en ziek tellen.
Zodat ik maar een waarde er uit krijg.

Hoop dat het nu duidelijk is.
In excel heet het aantal.als
Heb dit even in excel gemaakt maar zo staat het ook in access

gr. Fred
 
Ik heb het volgende gevonden op support.office.com:

Open de query in de gegevensbladweergave (dus niet in de ontwerpweergave!).
Klik in het menu-lint op Σ Totalen.
Er wordt een nieuwe rij Totaal weergegeven onder de laatste rij gegevens in het gegevensblad.
Klik in de rij Totaal op het veld dat u wilt optellen en selecteer vervolgens Aantal uit de lijst.

Dit telt echter het totaal in een kolom op, dus niet het totaal van een rij zoals jij wilt.
Maar ik neem aan dat Octafish of één van de andere experts hier je wel kan helpen daarmee.

Zo niet dan zul je op de een of andere manier alle ja's, nee's en ziek's in 3 aparte kolommen moeten zien te krijgen.
 
PS: het bovenstaande werkt ook in de gegevensbladweergave van een formulier.
 
Als je plaatje een kruistabel is (en dat hoop ik voor je, anders is de tabel niet gnormaliseerd) dan moet je de oplossing juist wél in het Ontwerpvenster maken. Met extra Rijvelden waarmee je een IIF formule gebruikt om de velden op te tellen. Maar doe er voor de zekerheid een voorbeeldje bij, dat kijkt wat makkelijker.
 
Ik was er al bang voor: je tabel [tbl_aanwezigheidsregistratie] is niet genormaliseerd; je hebt voor elke week een apart veld gemaakt. En dat is totaal niet handig. Herhalende velden horen niet thuis in een database, daar maak je een aparte tabel voor die je koppelt aan de hoofdtabel. Bovendien kun je nu maar presentie van één jaar vastleggen, want je hebt geen velden voor volgend jaar. Dat betekent dus dat je je historie kwijt raakt als je de tabel leegmaakt. Vele malen beter is het dus om alle weekvelden te vervangen door één datumveld (heb je een datum, dan weet je de week) en een statusveld (aanwezig, vakantie, ziek etc). Dat maakt het invullen een stuk eenvoudiger, je behoudt de historie, je krijgt alleen records die je ook nodig hebt, je overzichten kun je op een nette manier genereren, etc. Dus dat is stap 1: de tabel aanpassen. Jammer genoeg moet je dan vermoed ik ook de data opnieuw inkloppen, want dat is niet zo eenvoudig om te zetten.
 
Er zit ook iets raars in de relaties. Die koppeling tussen de voornamen in beide tabellen is zinloos. Heb je je eigenlijk wel eerst goed verdiept in hoe je een database moet bouwen?
 
Hallo Octafish, voor te reageren op jouw vraag, ik krijg dus een veldnaam datum en statusveld, wat doe ik met de namen daar dan ook een veldnaam aan toepassen zodat ik drie kolommen krijg en dan met querys de gegevens er uit haal.
Voor de vraag van PFL, dacht dat dit de beste optie was om de namen aan elkaar te linken, is er dan volgens u een betere optie? kun je me nog op weg helpen. dank je..
Alvast iedereen weer bedankt zo ver voor de hulp.
 
De namen link je aan elkaar door de ID van de tbl_Leden Xtravagant te koppelen aan een numeriek veld met (bij voorkeur) dezelfde naam in de tbl_aanwezigheidsregistratie. Dus je zou het veld ID in de tbl_Leden Xtravagant bijvoorbeeld IdLid kunnen noemen en dan in de tbl_aanwezigheidsregistratie een numeriek veld aan kunnen maken met dezelfde naam.
Vervolgens koppel je deze twee velden in het scherm Relaties aan elkaar, waarbij het belangrijk is dat je Referentiële Integriteit aanvinkt.

Daarna ga je op dezelfde manier te werk als ik beschreven heb in deze post:
http://www.helpmij.nl/forum/showthr...-voor-access?p=5597063&viewfull=1#post5597063

Daar ging het om ziekenhuisafdelingen en bij jou gaat het om namen maar het principe is hetzelfde.

Maar voor je dit allemaal doet, zou ik eerst even Octafish antwoord afwachten op je andere vraag.
 
De namen link je aan elkaar door de ID van de tbl_Leden Xtravagant te koppelen aan een numeriek veld met (bij voorkeur) dezelfde naam in de tbl_aanwezigheidsregistratie.
Daarover verschillen de meningen :). Het heeft absoluut een voordeel om veldnamen identiek te houden in tabellen die je wilt koppelen; Access linkt namelijk automatisch velden op basis van veldnaam aan elkaar als je bijvoorbeeld een query maakt, ook al heb je geen relaties gelegd. Weliswaar heb je dan geen Referentiële Integriteit (een absolute must als je het mij vraagt), maar je query zal wel fatsoenlijk werken.
Maar een nadeel is er ook, en persoonlijk vind ik dat veel groter dan het voordeel van de identieke veldnaam. En dat is dat je in een query met meerdere tabellen met daarin dus de identieke veldnaam altijd de tabelnaam moet toevoegen in de query. Access weet zonder problemen welke velden je bedoelt in queries als die veldnamen uniek zijn in de query. Dat gaat dus niet op als een koppelveld met dezelfde naam in 2 tabellen voorkomt. Deze query werkt dus prima:
Code:
SELECT Leden_ID, Voornaam, Achternaam, Groep, Wk01
FROM [tbl_Leden Xtravagant] INNER JOIN tbl_aanwezigheidsregistratie ON [tbl_Leden Xtravagant].LedenID = tbl_aanwezigheidsregistratie.Leden_ID
WHERE Voornaam Like [Wie zoek je? voornaam];

Maar deze niet:
Code:
SELECT LedenID, Voornaam, Achternaam, Groep, Wk01
FROM [tbl_Leden Xtravagant] INNER JOIN tbl_aanwezigheidsregistratie ON [tbl_Leden Xtravagant].LedenID = tbl_aanwezigheidsregistratie.LedenID
WHERE Voornaam Like [Wie zoek je? voornaam];

Die zou er dan minimaal zo uit moeten zien:
Code:
SELECT tbl_aanwezigheidsregistratie.LedenID, Voornaam, Achternaam, Groep, Wk01
FROM [tbl_Leden Xtravagant] INNER JOIN tbl_aanwezigheidsregistratie ON [tbl_Leden Xtravagant].LedenID = tbl_aanwezigheidsregistratie.LedenID
WHERE Voornaam Like [Wie zoek je? voornaam];

Overigens hoeft een sleutelveld niet numeriek te zijn; je mag best een tekstveld als sleutel gebruiken. Maar een veld Voornaam als sleutelveld of koppelveld is natuurlijk uit den boze; je staat raar te kijken als je "Jan Pieterse" in je systeem hebt zitten, en tegen Jan Marijnisse moet zeggen: sorry, we kunnen je niet aannemen, want we hebben al een Jan!

P.S. Overigens is de LIKE in de query (uit het voorbeeld gehaald) volkomen nutteloos :).
 
Maar een nadeel is er ook, en persoonlijk vind ik dat veel groter dan het voordeel van de identieke veldnaam. En dat is dat je in een query met meerdere tabellen met daarin dus de identieke veldnaam altijd de tabelnaam moet toevoegen in de query. Access weet zonder problemen welke velden je bedoelt in queries als die veldnamen uniek zijn in de query. Dat gaat dus niet op als een koppelveld met dezelfde naam in 2 tabellen voorkomt.
Aangezien ik nog nooit 'handmatig' queries heb gemaakt met SQL heb ik daar nooit last van gehad. Maar ik snap dat dat voor jou anders ligt :)

Overigens hoeft een sleutelveld niet numeriek te zijn; je mag best een tekstveld als sleutel gebruiken.
Weet ik, maar in dit geval moet het een numeriek veld zijn omdat het gekoppeld wordt aan een autonummeringsveld.
 
Re:

Hallo Iedereen,

zal mij er zelf verder over buigen hoe ik het nu ga doen.
Denk dat ik met de informatie die ik nu heb, er wel uit kom.

Groetjes Fred
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan