optellen enquete resultaat % in access

  • Onderwerp starter Onderwerp starter kczb
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

kczb

Gebruiker
Lid geworden
5 mrt 2007
Berichten
14
hallo,
ik heb een simpele tabel met enquete resultaat. De antwoorden zijn het resultaat van een meerkeuzevraag (radiobutton) (A,B,C,D of E). Er zijn 12 vragen in 12 kolommen. Elke rij is 1 persoon die 12 vragen heeft beantwoord.

vraag1 - vraag 2- vraag 3 etc..
A C E
B C A
A D E

wat ik wil weten is het percentage mensen dat in vraag 1 voor A heeft gekozen, voor B heeft gekozen etc...en zo voor elke vraag.

kan iemand mij op weg helpen met een query ?

bij voorbaat dank !!
 
Code:
SELECT tbl.Vraag, Sum(IIf([Antwoord]="A",1,0)) AS AantA, Sum(IIf([Antwoord]="B",1,0)) AS AantB, Sum(IIf([Antwoord]="C",1,0)) AS AantC, Sum(IIf([Antwoord]="D",1,0)) AS AantD, Sum(IIf([Antwoord]="E",1,0)) AS AantE
FROM tbl
GROUP BY tbl.Vraag;

Deze query is gebaseerd op een tabel met daarin de velden "Vraag" en "Antwoord".
De tabel zou je uit kunnen breiden met een PersoonID.
 
Code:
SELECT tbl.Vraag, Sum(IIf([Antwoord]="A",1,0)) AS AantA, Sum(IIf([Antwoord]="B",1,0)) AS AantB, Sum(IIf([Antwoord]="C",1,0)) AS AantC, Sum(IIf([Antwoord]="D",1,0)) AS AantD, Sum(IIf([Antwoord]="E",1,0)) AS AantE
FROM tbl
GROUP BY tbl.Vraag;

Deze query is gebaseerd op een tabel met daarin de velden "Vraag" en "Antwoord".
De tabel zou je uit kunnen breiden met een PersoonID.

dank je voor je reactie!

Ik heb de query uitgeprobeerd en hij werkt....geeft het juiste aantal A's B's etc. voor 1 vraag . Kun je ook zeggen hoe ik deze query kan aanpassen zodat hij dit voor Alle vragen doet? moet ik voor elke vraag afzonderlijk deze select statement herhalen?

bedankt !
 

Bijlagen

  • access.jpg
    access.jpg
    19 KB · Weergaven: 84
Zoals je het nu opzet wordt het denk ik een probleem. Zelf zou ik het als volgt opbouwen :

tblVragen met velden 'ID' en 'Vraag'
tblPersonen met velden 'ID' en 'Naam'
tblAntwoorden met velden 'Persoon.ID' , 'Vraag.ID' en 'Antwoord'

Als je nu de query loslaat op tblAntwoorden dan zou het moeten werken.

Als je het geheel wilt presenteren zoals aangegeven dan kun je daarvoor een kruistabelquery gebruiken.
 
Laatst bewerkt:
jouw opzet van tabellen en velden is duidelijk. En maakt het inderdaad mogelijk om deze query toe te passen. werkt perfect!

Echter, als ik de tabel structuur zo aanpas dan weet ik niet zo goed hoe ik nieuwe data kan wegschrijven.

De enquete bestaat uit 12 vragen en staat op een webpagina. Als ik de oude tabelstructuur aanhoud ( tblAntwoorden - veldantwoord1, veldantwoord2 etc - zie jpg in eerdere mail) dan lukt het mij met een INSERT statement 12 antwoorden in een keer weg te schrijven in 12 velden.
(INSERT INTO tblAntwoorden (veldantwoord1,veldantwoord2.....) VALUES ( textboxvraag1,textboxvraag2...)

Vraag is dus wat voor SQL statement te gebruiken om deze 12 antwoorden gekoppeld aan de vraagID weg te schrijven in tblAntwoorden met velden 'VraagID' en 'Antwoord'

bedankt voor je reactie!
 
Met een For ... Next lus kun je de INSERT 12 keer doen.
 
Met een For ... Next lus kun je de INSERT 12 keer doen.

hmmm klinkt logisch...maar hoe?
In kolom 1 (=veld "vraagID") is het mogelijk om de getallen 1 t/m 12 te plaatsen. Maar de 12 antwoorden komen uit verschillende textvelden (geen array).

FOR i = 1 to 12
INSERT INTO tblAntwoorden ( i, textbox1) ??
NEXT

onderstaande statement plaats de 12 VraagId's in kolom1...echter hoe krijg ik de 12 antwoorden in de 2e kolom? Wellicht met gebruik van VALUES (textbox1, textbox2 etc...) ..maar hoe?

INSERT INTO [tblAntwoorden]( vraagID)
SELECT vraagID FROM [tblvragen]



Trying hard to keep it simple:confused:

wederom dank voor je hulp
 
Code:
INSERT INTO tblAntwoorden SET Antwoord = ( i, textbox1)

Je gaf zelf al het halve antwoord !
 
INSERT INTO tblAntwoorden SET Antwoord = ( i, textbox1)

geeft een syntaxisfout, die ik maar niet weg kan krijgen.
Daarbij....Ik snap dat met FOR..NEXT de 'vraagID' (i) elke keer met 1 ophoogt, maar in dit voorbeeld blijft het antwoord bij eleke VraagID hetzelfde nl. de waarde ingevuld in textbox1.

het volgende werkt maar is vrij omslachtig lijkt mij:
stap1. VraagId's in kolom 1

INSERT INTO [tblAntwoorden]( vraagID)
SELECT vraagID FROM [tblvragen]

stap 2 t/m 13: elke antwoord afzonderlijk wegschrijven

UPDATE tblAntwoorden SET Antwoord = textbox1.text WHERE vraagID = 1
UPDATE tblAntwoorden SET Antwoord = textbox2.text WHERE vraagID = 2
..............

etc etc...t/m de laatste vraag
als het werkt, dan werkt het...maar ik zou graag de simpele manier willen leren

bedankt !
 
INSERT INTO tblAntwoorden SET Antwoord = ( i, textbox1)

geeft een syntaxisfout, die ik maar niet weg kan krijgen.
Daarbij....Ik snap dat met FOR..NEXT de 'vraagID' (i) elke keer met 1 ophoogt, maar in dit voorbeeld blijft het antwoord bij eleke VraagID hetzelfde nl. de waarde ingevuld in textbox1.

het volgende werkt maar is vrij omslachtig lijkt mij:
stap1. VraagId's in kolom 1

INSERT INTO [tblAntwoorden]( vraagID)
SELECT vraagID FROM [tblvragen]

stap 2 t/m 13: elke antwoord afzonderlijk wegschrijven

UPDATE tblAntwoorden SET Antwoord = textbox1.text WHERE vraagID = 1
UPDATE tblAntwoorden SET Antwoord = textbox2.text WHERE vraagID = 2
..............

etc etc...t/m de laatste vraag
als het werkt, dan werkt het...maar ik zou graag de simpele manier willen leren

bedankt !:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan